Nur weil das Datum im JSON-Schema geschrieben ist, bedeutet das nicht, dass der Validator das Datum überprüfen muss.
Das Schema sagt `format: date`, aber das ungültige Datum besteht die Überprüfung. Dies bedeutet nicht unbedingt, dass ein Fehler in der Bibliothek vorliegt. Wie `format` gehandhabt wird, hängt von der Validatorkonfiguration ab. Wenn Sie die Meldung „Verifizierung erfolgreich“ erhalten, fragen Sie zunächst, ob der Typ, die Struktur oder auch die Datumssemantik überprüft wurden.
– Der standardmäßige Draft202012Validator führt nur eine Strukturüberprüfung durch und lehnt nicht vorhandene Daten wie den 30.02.2026 nicht ab.
- Die Monats- und Tagessequenz vom 04.03.2026 erfordert eine Quellregion, eine Feldbeschreibung oder eine eindeutige Protokollbestätigung. Die Datumsüberprüfung kann nicht beweisen, dass der Monat richtig ausgewählt ist.
- Die Tests sollten legale Schalttage, illegale Schalttage und fehlerhafte Werte umfassen und einzeln in einer gesperrten Umgebung überprüft werden.
format: date ist im JSON-Schema geschrieben, aber ein nicht vorhandenes Datum besteht die Überprüfung. Dies ist normalerweise kein Fehler in der Bibliothek. Wie format gehandhabt wird, hängt von der Validatorkonfiguration ab. Wenn Sie auf das Ergebnis „Verifizierung erfolgreich"stoßen, sollten Sie zunächst bestätigen, ob der Typ, die Struktur oder auch die Datumssemantik überprüft werden.
Dieser Artikel eignet sich für Entwickler und Prüfer, die eine strukturierte Überprüfung von Dokumentdaten durchführen müssen und Wert auf die Genauigkeit von Datumsfeldern legen. Nachdem Sie dies gelesen haben, können Sie feststellen, was eine bestandene Verifizierung bedeutet, und Gegenbeispieltests verwenden, um die Datumsregeln festzulegen.
In diesem Artikel werden synthetische Proben verwendet, um die Verarbeitungsmethode zu demonstrieren. Der Code wurde anhand von Beispielen in einer isolierten Umgebung überprüft und stellt keine Garantie für alle echten Dateien oder die Produktleistung dar. Bevor Sie wichtige Dokumente bearbeiten, bewahren Sie bitte die Originale auf und überprüfen Sie sie anhand der Grenzen und Akzeptanzpunkte im Text.
Was genau prüft die Datumsüberprüfung von JSON Schema? Fazit in einem Satz
Bestätigen Sie zunächst, ob dieformat-Prüfung im Validator aktiviert ist, und bestätigen Sie dann, ob die semantischen Regeln des Datums (ob es tatsächlich existiert und wie es zu interpretieren ist) ansonsten dafür verantwortlich sind.
| Ihre Situation | Empfohlene Praktiken | Grund |
|---|---|---|
Überprüfen Sie format: date nur mit dem Standardvalidator | Überprüfen Sie zunächst, ob FormatChecker explizit aktiviert ist | Wie format gehandhabt wird, hängt von der Validatorkonfiguration ab |
Es müssen Datumsangaben wie 2026-02-30 identifiziert werden | Fügen Sie es als Gegenbeispiel in den Testsatz ein | Die Zeichenfolge sieht aus wie ein Datum, was nicht bedeutet, dass sie im Kalender vorhanden ist. |
| Die Reihenfolge von Tag und Monat des Quellendatums ist unbekannt. | Mehrdeutigkeit markieren, kein automatisches Raten | Das Bestehen der date-Überprüfung kann nur zeigen, dass der konvertierte Wert gültig ist |
| Felder mit Uhrzeit und Zeitzone | Verwenden Sie unabhängige Zeitprotokolle | Die ersten zehn Zeichen sollten nicht beiläufig abgefangen und verarbeitet werden |
| Wird zur Überprüfung des Übersetzungsdatums verwendet | Speichern Sie sowohl raw_text als auch normalisierte Werte | Rezensenten müssen sowohl den Originalinhalt als auch die systematische Erklärung sehen |
Zwei scheinbar identische Schecks
2026-02-30 ist eine Zeichenfolge und sieht aus wie ein Datum, aber im Februar gibt es keinen 30. Tag. Nur bei der Überprüfung regelmäßiger Formen wird dieses Problem übersehen. Im Folgenden wird jsonschema von Python verwendet, um die Ergebnisse des Standardvalidators zu vergleichen und FormatChecker explizit zu aktivieren.
Testen Sie die Konfiguration mit einem unmöglichen Datum
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)
Das synthetische Beispiel verifiziert nur date. Andere Formate können optionale Abhängigkeiten oder Implementierungsunterschiede aufweisen und sollten von Fall zu Fall in einer gesperrten Umgebung getestet werden. Unbekannte Formatnamen bedeuten nicht, dass eine Prüfung durchgeführt wurde, und falsche Schreibweisen können ein Gefühl bedeutungsloser Sicherheit vermitteln.
Das Datumsformat ist keine Datumsinterpretationsregel
03/04/2026 in der Quelle kann den 4. März oder den 3. April bedeuten. Vor der Konvertierung in das ISO-Format ist die Quellregion, die Feldspezifikation oder das explizite Protokoll erforderlich. Das Bestehen der date-Überprüfung kann nur beweisen, dass der konvertierte Wert gültig ist, nicht jedoch, dass Sie den richtigen Monat ausgewählt haben.
| Quellenangaben | was zu tun | Was nicht getan werden sollte |
|---|---|---|
| Nicht existierende Kalenderdaten | Fehler machen und die Quelle überprüfen | Automatisch auf den nächsten Monat übertragen |
| Die Reihenfolge von Sonne und Mond ist unklar | Mark-Mehrdeutigkeit | Raten basierend auf Serversprache |
| Enthält Zeit und Zeitzone | Verwenden Sie unabhängige Zeitvereinbarungen | Die ersten zehn Zeichen zufällig abgeschnitten |
| Das Feld ist leer | Nach der fehlenden Regel gehandhabt | Ergänzen Sie das Tagesdatum |
Konfiguration in Regressionstests einbeziehen
Der Testsatz enthält mindestens drei Arten von Werten: einen gültigen Schalttag, einen illegalen Schalttag und einen falschen Wert. Das Ausführen dieser Gegenbeispiele während der Bereitstellung ist effektiver, als einfach zu überprüfen, ob die Schemadatei existiert. Wenn der Dienst sprachübergreifend implementiert ist, sollte derselbe Testsatz separat validiert werden, und das Standardverhalten zweier Validatoren sollte nicht als identisch angenommen werden.
Die Übersetzungsübersicht behält das Originaldatum
Bei der Verwendung des Datumsextraktionsergebnisses für die OmniDoc-Übersetzungsverifikation wird empfohlen, sowohl raw_text als auch normalisierte Werte zu speichern. Gutachter müssen sehen, "was der Originalinhalt ist" und "wie das System ihn interpretiert", um Unterschiede bei Übersetzung, Extraktion oder Formatkonvertierung zu erkennen.
Quellen: Zeichenfolge und Format des JSON-Schemas.
📊 Kernvergleich
| Vergleichsartikel | Standard-Validator | FormatChecker explizit aktivieren |
|---|---|---|
| Inspektionsumfang | Arten und Struktur | Überprüfen Sie außerdem das Format derformat-Erklärung |
Fazit zu 2026-02-30 | Du kannst nicht davon ausgehen, dass du abgelehnt wirst | Gegenbeispiele werden für reale Tests benötigt, um das zu bestätigen |
| Die Bedeutung des Durchgehens | Das bedeutet nicht, dass das Datum semantisch korrekt ist | Es ist weiterhin notwendig, die Datumserklärung am Geschäftsdatum zu überprüfen |
🎯 Welche Methode passt zu dir?
Wenn du nur bestätigen musst, dass das Feld eine Zeichenkette ist oder die korrekte Struktur hat
Der Standardvalidator ist in der Regel ausreichend, aber beachten Sie, dass er nicht unbedingt die Datumssemantik prüft.
Wenn du bestätigen musst, dass das Datum wirklich existiert
Aktiviere explizit FormatChecker und verifiziere mit Gegenbeispielen wie 2026-02-30.
Wenn du das Datum in der Quelldatei überprüfen willst
Zuerst bestätigen Sie die Quellregeln für die Tages-Monat-Reihenfolge und speichern dann den Originaltext und die normalisierten Werte.
Wenn Ihr Service sprachübergreifend bereitgestellt wird
Führe in jeder Implementierung denselben Testsatz separat aus.
❓ Häufig gestellte Fragen (FAQ)
1. Das Schema schrieb format: date, warum können also schlechte Daten trotzdem passieren?
Die Handhabung von format hängt von der Validatorkonfiguration ab; standardmäßig kann die Datumssemantik nicht überprüft werden.
2. Warum ist 2026-02-30 ein nützlicher Testwert?
Es sieht nach einem Datum aus, aber der Februar hat keinen dreißigsten Tag. Wenn man sich nur auf das Aussehen konzentriert, werden solche Probleme übersehen.
3. Was passiert, wenn man einen unbekannten Formatnamen verwendet?
Es sollte nicht als überprüft angesehen werden; Rechtschreibfehler können Ihnen ein falsches Sicherheitsgefühl vermitteln.
4. Wie sollte 03/04/2026 konvertiert werden?
Quellregion, Feldbeschreibung oder klare Zustimmung sind erforderlich. Andernfalls ist es unmöglich zu sagen, ob es den 4. März oder den 3. April bedeutet.
📝 Zusammenfassung
Das Bestehen eines Checkchecks bedeutet lediglich, dass die Daten den deklarierten Regeln entsprechen und nicht, dass jedes Datum korrekt ist. Zunächst bestätigen Sie den Inspektionsumfang des Validators und beheben Sie dann die Datumsverarbeitung mit Gegenbeispielen und Quellregeln für zuverlässigere Ergebnisse.


