Qué hace esta herramienta
Una muestra JSON pasa a ser un JSON Schema en draft 2020-12.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"address": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
},
"required": ["id", "name", "address"]
}
Los objetos anidados se escriben en su sitio. Sin sección $defs y sin $ref: para una muestra, un esquema en línea es el que se lee de arriba abajo.
Dos ajustes, porque ambas respuestas se defienden
- Claves requeridas. Activo por defecto: cada clave de la muestra queda listada. Inactivo: ningún array
required, y un documento al que le falte una clave valida igualmente. additionalProperties. Permisivo por defecto: una clave de más pasa. En estricto se añade"additionalProperties": falsea cada objeto y una clave inesperada es un error.
Ninguna de las dos decisiones se lee en una muestra. Son afirmaciones sobre tu API: te tocan a ti, en vez de adivinarse aquí.
integer y number vienen del literal
3 da integer; 3.0 y 1e3 dan number. JSON tiene un solo tipo numérico: cómo se escribió un número es el único rastro de lo que lo produjo. Un esquema que llame entero a 10.0 rechaza 10.5, con toda probabilidad el registro siguiente: es exactamente lo que esta herramienta hacía hasta que el defecto se encontró y corrigió al escribir estas páginas.
Lo que la muestra no describe
"n": nullda{"type": "null"}, un esquema que no acepta nada más. Si el campo es una cadena anulable, el retoque es{"type": ["string", "null"]}.- Un array vacío da
{"type": "array"}sinitems: no se afirma nada de elementos que nunca se vieron. - Un array heterogéneo da
anyOf, listando exactamente las formas presentes. - Ni
format, niminLength, nipattern. Un correo, un UUID y una frase son todos"type": "string"aquí. Añadir"format": "email"sería adivinar un significado, no leer una estructura, y es lo primero que conviene añadir a mano cuando conoces el campo.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.