Επικύρωση JSON Schema
Επικυρώστε ένα έγγραφο JSON με ένα JSON Schema στο πρόγραμμα περιήγησής σας. Κάθε σφάλμα εμφανίζεται με διαδρομή στιγμιότυπου, λέξη-κλειδί και διαδρομή schema.
| # | Διαδρομή στιγμιότυπου | Λέξη-κλειδί | Μήνυμα | Διαδρομή στο schema |
|---|
Πώς να επικυρώσετε JSON με ένα schema
- Επικολλήστε το schema σας στο JSON Schema και τα δεδομένα σας στο Έγγραφο JSON, ή διαλέξτε μια έτοιμη περίπτωση από το Παράδειγμα.
- Αφήστε την Έκδοση (draft) στο Αυτόματη ($schema) για να χρησιμοποιηθεί η έκδοση που ορίζει το
$schemaτου schema, ή επιβάλετε draft 4, 7, 2019-09 ή 2020-12. - Η επικύρωση εκτελείται καθώς πληκτρολογείτε· το Επικύρωση την εκτελεί ξανά. Το Μορφοποίηση και των δύο ξαναμορφοποιεί τα δύο κείμενα.
- Διαβάστε το αποτέλεσμα: μια πράσινη γραμμή όταν το έγγραφο είναι έγκυρο, αλλιώς ένας πίνακας σφαλμάτων.
Τα μηνύματα σφαλμάτων του επικυρωτή εμφανίζονται στα αγγλικά· τα υπόλοιπα στοιχεία της σελίδας είναι στα ελληνικά.
Ανάγνωση του πίνακα σφαλμάτων
Κάθε γραμμή είναι ένας κανόνας που απέτυχε:
- Η Διαδρομή στιγμιότυπου είναι ένας δείκτης JSON Pointer προς την τιμή που απέτυχε. Το
/roles/1είναι το δεύτερο στοιχείο τουroles· το(ρίζα)είναι ολόκληρο το έγγραφο. - Η Λέξη-κλειδί είναι ο κανόνας του schema που απέτυχε:
type,required,minimum,pattern,format,additionalPropertiesκ.ο.κ. - Το Μήνυμα εξηγεί την αποτυχία, για παράδειγμα
0 is less than 1. - Η Διαδρομή στο schema δείχνει τη λέξη-κλειδί μέσα στο schema, όπως το
/properties/id/minimum, ώστε να βρείτε γρήγορα τον κανόνα.
Η επικύρωση δεν σταματά στο πρώτο πρόβλημα: καταγράφονται όλα τα σφάλματα. Όταν αποτυγχάνει μια ιδιότητα αντικειμένου, ο επικυρωτής αναφέρει μια σύνοψη («Property “id” does not match schema») και μετά τον ακριβή λόγο. Το Εμφάνιση μόνο των πιο συγκεκριμένων σφαλμάτων κρύβει αυτές τις συνόψεις· αποεπιλέξτε το για να δείτε ολόκληρη την αλυσίδα. Τα σφάλματα κάτω από τα anyOf και oneOf διατηρούνται πάντα μαζί με τα συγκεκριμένα σφάλματα κάθε κλάδου, επειδή έχουν νόημα μόνο μαζί.
Τι υποστηρίζεται
- Εκδόσεις (drafts): 4, 6 (επικυρώνεται με τους κανόνες του draft 7), 7, 2019-09 και 2020-12, συμπεριλαμβανομένων των
$defs/definitions, τοπικού$ref,if/then/else,dependentRequired,dependentSchemas,prefixItems,unevaluatedPropertiesκαιunevaluatedItems. - Μορφές (formats): ελέγχονται οι
date,time,date-time,duration,email,hostname,ipv4,ipv6,uri,uri-reference,uri-template,uuid,regex,json-pointerκαιrelative-json-pointer. Οι άγνωστες μορφές αγνοούνται, όπως επιτρέπει η προδιαγραφή. - Αναφορές: το
$refμπορεί να δείχνει οπουδήποτε μέσα στο schema, μεταξύ άλλων σε ένα$idπου δηλώνει. Τα απομακρυσμένα schemas δεν κατεβαίνουν ποτέ· μια αναφορά σε άλλο URL αναφέρεται ως μη επιλύσιμη.
Το εργαλείο επικυρώνει έγγραφα ως προς το schema σας. Δεν ελέγχει αν το ίδιο το schema ακολουθεί το meta-schema, αλλά προειδοποιεί για άγνωστα ονόματα type όπως "strin" ή "int", μια συνηθισμένη γραφή που οι επικυρωτές αλλιώς αγνοούν σιωπηλά.
Τα παραδείγματα
- Προφίλ χρήστη (2020-12):
required, μήκη συμβολοσειρών,format: email, έναenumμέσα σεitems,uniqueItemsκαιadditionalProperties: false. - Λίστα προϊόντων με $ref (draft-07): ένας πίνακας του οποίου τα στοιχεία αναφέρονται στο
#/definitions/product, μεpatternγια το SKU και τιμή μεexclusiveMinimum. - Ρυθμίσεις με if/then (2019-09): ένα πιστοποιητικό που απαιτείται μόνο στη λειτουργία HTTPS, ένα
oneOfανάμεσα σε email και URI, και αριθμητικά όρια.
Κάθε παράδειγμα συνοδεύεται από ένα έγγραφο με εσκεμμένα λάθη, ώστε να δείτε πώς μοιάζουν τα σφάλματα.
Συχνές ερωτήσεις
Μεταφορτώνονται τα δεδομένα μου;
Όχι. Το schema και το έγγραφο επικυρώνονται στο πρόγραμμα περιήγησής σας· τίποτα δεν στέλνεται σε διακομιστή.
Γιατί το $ref του schema μου είναι «μη επιλύσιμο»;
Ο επικυρωτής γνωρίζει μόνο το schema που επικολλήσατε. Ένα $ref σε άλλο αρχείο ή URL δεν μπορεί να ακολουθηθεί· αντιγράψτε τους ορισμούς στα $defs και δείξτε στο #/$defs/….
Ποιο draft να χρησιμοποιήσω;
Χρησιμοποιήστε αυτό που στοχεύει το έργο σας και δηλώστε το με $schema. Για νέα schemas, το 2020-12 είναι η τρέχουσα έκδοση· το χρησιμοποιεί και το OpenAPI 3.1.
Γιατί το integer απορρίπτει το 2.0;
Δεν το απορρίπτει: το JSON Schema θεωρεί το 2.0 ακέραιο επειδή η τιμή του είναι ακέραια. Το 2.5 αποτυγχάνει στο "type": "integer".
Λειτουργεί χωρίς σύνδεση;
Ναι. Μόλις φορτωθεί η σελίδα και εκτελέσετε μια πρώτη επικύρωση (που φορτώνει τον επικυρωτή), δεν χρειάζεται σύνδεση.
Σχετικά εργαλεία
- Μορφοποίηση και επικύρωση JSON Δωρεάν μορφοποίηση και επικύρωση JSON που κάνει beautify, minify και έλεγχο του JSON στο πρόγραμμα περιήγησής σας, με συντακτικά σφάλματα ανά γραμμή και στήλη.
- Δοκιμή εκφράσεων JSONPath Δοκιμάστε εκφράσεις JSONPath στο δικό σας JSON στο πρόγραμμα περιήγησης: φίλτρα, slices, αναδρομική κάθοδος, διαδρομές και JSON Pointers.
- Μετατροπέας JSON σε YAML Μετατρέψτε JSON σε YAML και YAML σε JSON στο πρόγραμμα περιήγησής σας, με υποστήριξη anchors, merge keys και αρχείων πολλών εγγράφων. Δεν γίνεται μεταφόρτωση.