Cosa fa questo strumento
Valida un documento JSON contro un JSON Schema, restituendo « valido » o una lista di errori con il path di istanza e il path di schema esatti per ogni fallimento. Supporta sia Draft-07 che Draft 2020-12, auto-rilevati dal campo $schema dello schema, con override manuale. I controlli di formato (email, uri, date-time, uuid, ecc.) sono attivi.
Quando usarlo
- Progettare un nuovo schema e provarlo contro payload rappresentativi.
- Diagnosticare perché la tua API ha rifiutato una richiesta — il body corrisponde davvero ai docs?
- Verificare che un file di config segua lo schema del tuo team prima di committarlo.
- Migrare tra Draft-07 e 2020-12 e controllare che niente si sia rotto.
Come funziona
Sotto il cofano si usa Ajv (il validatore JSON Schema dietro la maggior parte del tooling JS), pinnato in modalità tutti-gli-errori in modo che tu veda ogni problema in una volta invece di fermarsi al primo. I controlli di formato vengono da ajv-formats. Sia schema che dati vengono parsati in locale; niente viene inviato da nessuna parte.
Selezione del draft: se lo schema ha "$schema": "https://json-schema.org/draft/2020-12/schema" usiamo il dialetto 2020-12; "http://json-schema.org/draft-07/schema#" seleziona Draft-07. Senza $schema, il default è Draft-07 perché è ancora il più comune in natura.
Note
additionalProperties di default è permesso — è giusto? Sì, secondo la spec. Se vuoi proibire campi extra, imposta "additionalProperties": false esplicitamente. È la causa singola più comune delle sorprese « pensavo che il mio schema fosse strict ».
Qual è la differenza tra Draft-07 e 2020-12? 2020-12 rilavora i riferimenti ($dynamicRef), divide items in items e prefixItems, e cambia come viene gestito additionalItems. La maggior parte degli schema quotidiani funziona in entrambi, ma se usi la validazione di tuple, la sintassi è incompatibile.
Perché la mia regex pattern corrisponde a cose diverse in validatori diversi? JSON Schema specifica la sintassi regex ECMA-262 (il flavor JavaScript). I validatori in altri linguaggi traducono, a volte imperfettamente. Testa i pattern nel Tester regex per essere sicuro.
Strumenti correlati
- Formatter JSON — assicurati che entrambi gli input siano ben formati prima
- JSON ↔ YAML — quando il tuo schema è in YAML
- Tester regex — debugga le keyword
pattern