To, že je datum zapsáno ve schématu JSON, neznamená, že validátor musí datum kontrolovat.

Schéma říká `format: date`, ale špatné datum projde ověřením. To nemusí nutně znamenat, že je v knihovně chyba. Způsob zpracování `format` závisí na konfiguraci validátoru. Když získáte "ověření úspěšné", nejprve se zeptejte, zda zkontroloval typ, strukturu nebo také zkontroloval sémantiku data.

format: date je zapsáno ve schématu JSON, ale ověřením projde neexistující datum. To obvykle není chyba v knihovně. Jak je format zpracováno, závisí na konfiguraci validátoru. Když narazíte na výsledek „ověření úspěšné", měli byste nejprve potvrdit, zda kontroluje typ, strukturu nebo také kontroluje sémantiku data.

Tento článek je vhodný pro vývojáře a recenzenty, kteří potřebují provádět strukturované ověření dat dokumentu a dbají na přesnost polí data. Po přečtení tohoto budete schopni určit, co znamená úspěšné ověření, a pomocí testování protipříkladu opravit pravidla pro datum.

Tento článek používá syntetické vzorky k demonstraci metody zpracování. Kód byl zkontrolován s příklady v izolovaném prostředí a není zárukou všech skutečných souborů nebo výkonu produktu. Před zpracováním důležitých dokumentů si prosím uschovejte originály a zkontrolujte je podle hranic a přejímacích položek v textu.

Co přesně kontroluje ověření data schématu JSON? Závěr jednou větou

Nejprve potvrďte, zda je ve validátoru povolena kontrolaformat, a poté potvrďte, zda jsou jinak zodpovědná sémantická pravidla data (zda skutečně existuje a jak jej interpretovat).

vaší situaciDoporučené postupydůvod
Zkontrolujte format: date pouze s výchozím validátoremNejprve ověřte, zda je program FormatChecker explicitně povolenJak je format zpracováno, závisí na konfiguraci validátoru
Potřebujete identifikovat data, jako je 2026-02-30Vložte jej do testovací sady jako protipříkladŘetězec vypadá jako datum, což neznamená, že v kalendáři existuje.
Pořadí dne a měsíce data zdroje není známo.Označte nejednoznačnost, žádné automatické hádáníÚspěšné ověření date může pouze ukázat, že převedená hodnota je platná
Pole s časem a časovou zónouPoužívejte nezávislé časové protokolyPrvních deset postav by nemělo být zachyceno a zpracováno náhodně
Používá se pro ověření data překladuUložte hodnoty raw_text i normalizované hodnotyRecenzenti musí vidět jak původní obsah, tak systematické vysvětlení

Dva zdánlivě stejné šeky

2026-02-30 je řetězec a vypadá jako datum, ale v únoru není žádný 30. den. Pouze kontrola pravidelných tvarů tento druh problému vynechá. Následující text používá jsonschema Pythonu k porovnání výsledků výchozího validátoru a explicitního povolení FormatChecker.

Otestujte konfiguraci s nemožným datem

from jsonschema import Draft202012Validator, FormatChecker

schema = {"type": "string", "format": "date"}
structural = Draft202012Validator(schema)
strict = Draft202012Validator(schema, format_checker=FormatChecker())

def valid(v, value):
    return not list(v.iter_errors(value))

assert valid(structural, "2026-02-30")
assert not valid(strict, "2026-02-30")
assert valid(strict, "2024-02-29")
assert not valid(strict, "2025-02-29")
assert not valid(strict, "26/09/2026")
assert not valid(strict, 20260926)

Syntetický příklad pouze ověřuje date. Jiné formáty mohou mít volitelné závislosti nebo rozdíly v implementaci a měly by být testovány případ od případu v uzamčeném prostředí. Názvy neznámých formátů nelze chápat tak, že znamenají, že byla implementována nějaká kontrola, a překlepy vám mohou dát pocit bezvýznamného zabezpečení.

Formát data není pravidlem interpretace data

03/04/2026 ve zdroji může znamenat 4. březen nebo 3. duben. Před převodem do formátu ISO je vyžadován zdrojový region, specifikace pole nebo explicitní protokol. Úspěšné ověření date může pouze prokázat, že převedená hodnota je platná, ale nemůže prokázat, že jste vybrali správný měsíc.

Zdroj informacíco dělatCo nedělat
Kalendářní datum, které neexistujeNahlaste chybu a zkontrolujte zdrojAutomaticky přejděte na další měsíc
Neznámý řád slunce a měsíceNejednoznačnost značekHádejte na základě jazyka serveru
S časem a časovou zónouPoužívejte nezávislé časové protokolyNáhodně zachyťte prvních deset postav
Pole je prázdnéZacházejte podle chybějících pravidelDoplňte dnešní datum

Zahrnout konfiguraci do regresního testování

Do testovací sady vložte alespoň tři typy hodnot: zákonný přestupný den, nezákonný přestupný den a chybně vytvořenou hodnotu. Spuštění těchto protipříkladů při nasazování je efektivnější než jen kontrola, zda soubor schématu existuje. Pokud je služba implementována napříč jazyky, měla by být stejná testovací sada ověřena samostatně a nepředpokládejte, že výchozí chování dvou validátorů je stejné.

Kontrola překladu zachovává původní datum

Při použití výsledků extrakce data pro ověření překladu OmniDoc se doporučuje uložit jak hodnoty raw_text, tak normalizované hodnoty. Recenzent potřebuje vidět „co je původní obsah"a „jak jej systém interpretuje", aby mohl určit, zda rozdíl spočívá v překladu, extrakci nebo konverzi formátu.

Zdroje: Řetězec a formát schématu JSON.

📊 Srovnání jádra

Srovnávací položkaVýchozí validátorExplicitně povolte FormatChecker
Zkontrolujte rozsahTypy a strukturyDodatečná kontrola formátu prohlášeníformat
Závěr o 2026-02-30Nepředpokládejte odmítnutíNutno potvrdit protipříklady
význam při míjeníNeznamená to, že sémantika data je správnáJeště je třeba zkontrolovat vysvětlení data na firmě

🎯 Která metoda je pro vás vhodná?

Pokud se jen potřebujete ujistit, že pole je řetězec nebo je správně strukturováno

Výchozí validátor je obvykle dostačující, ale uvědomte si, že nemusí nutně kontrolovat sémantiku data.

Pokud potřebujete potvrdit, že datum skutečně existuje

Explicitně povolte FormatChecker a ověřte pomocí protipříkladů, jako je 2026-02-30.

Pokud chcete zkontrolovat datum ve zdrojovém souboru

Nejprve potvrďte zdrojová pravidla pořadí dnů a měsíců a poté uložte původní text a normalizované hodnoty.

Pokud je vaše služba nasazena napříč jazyky

Na každé implementaci se spouští stejná sada testů.

❓ Často kladené otázky (FAQ)

1. Schéma je napsáno jako format: date, proč mohou špatná data stále projít?

Způsob zpracování format závisí na konfiguraci validátoru a sémantika data není ve výchozím nastavení nutně kontrolována.

2. Proč je 2026-02-30 užitečná testovací hodnota?

Vypadá to jako rande, ale únor nemá třicátý den. Pouhá kontrola vzhledu tento druh problému vynechá.

3. Co se stane, když je použit neznámý název formátu?

Nemělo by se s ním zacházet, jako by byl zkontrolován, a pravopisné chyby vám mohou poskytnout falešný pocit bezpečí.

4. Jak se má převést 03/04/2026?

Je vyžadována oblast původu, popis pole nebo explicitní protokol. Jinak by nebylo možné říci, zda představuje 4. březen nebo 3. duben.

📝 Shrnutí

Úspěšné ověření znamená pouze to, že data splňují deklarovaná pravidla, ale neznamená, že význam každého data je správný. Nejprve potvrďte rozsah kontroly validátoru a poté použijte protipříklady a zdrojová pravidla k opravě zpracování data, aby byly výsledky spolehlivější.

Vyzkoušejte to hned: Nahrajte dokument a začněte překládat při zachování původního rozvržení

Aktualizováno 2026-11-13