JSON: esquema
JSON Schema es una especificación para el formato basado en JSON para definir la estructura de datos JSON. Fue escrito bajo el borrador de IETF que expiró en 2011. Esquema JSON -
- Describe su formato de datos existente.
- Documentación clara, legible por humanos y máquinas.
- Validación estructural completa, útil para pruebas automatizadas.
- Validación estructural completa, validando los datos enviados por el cliente.
Bibliotecas de validación de esquemas JSON
Actualmente hay varios validadores disponibles para diferentes lenguajes de programación. Actualmente, el validador de esquemas JSON más completo y compatible disponible es JSV.
Idiomas | Bibliotecas |
---|---|
C | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.RED | Json.NET (MIT) |
ActionScript 3 | Frigga (MIT) |
Haskell | esquema-aeson (MIT) |
Pitón | Jsonschema |
Rubí | autoparse (ASL 2.0); ruby-jsonschema (MIT) |
PHP | php-json-schema (MIT). json-esquema (Berkeley) |
JavaScript | Ordenado (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (BSD modificado o AFL 2.0); schema.js. |
Ejemplo de esquema JSON
A continuación se muestra un esquema JSON básico, que cubre una descripción clásica del catálogo de productos:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]
}
Comprobemos varias palabras clave importantes que se pueden usar en este esquema:
No Señor. | Palabra clave y descripción |
---|---|
1 | $schema La palabra clave $ schema indica que este esquema está escrito de acuerdo con el borrador de la especificación v4. |
2 | title Utilizará esto para dar un título a su esquema. |
3 | description Una pequeña descripción del esquema. |
4 | type La palabra clave type define la primera restricción en nuestros datos JSON: tiene que ser un objeto JSON. |
5 | properties Define varias claves y sus tipos de valor, valores mínimos y máximos que se utilizarán en el archivo JSON. |
6 | required Esto mantiene una lista de propiedades requeridas. |
7 | minimum Esta es la restricción que se aplicará al valor y representa el valor mínimo aceptable. |
8 | exclusiveMinimum Si "exclusivoMínimo" está presente y tiene un valor booleano verdadero, la instancia es válida si es estrictamente mayor que el valor de "mínimo". |
9 | maximum Ésta es la restricción que se aplicará al valor y representa el valor máximo aceptable. |
10 | exclusiveMaximum Si "exclusiveMaximum" está presente y tiene un valor booleano verdadero, la instancia es válida si es estrictamente menor que el valor de "maximum". |
11 | multipleOf Una instancia numérica es válida contra "multipleOf" si el resultado de la división de la instancia por el valor de esta palabra clave es un número entero. |
12 | maxLength La longitud de una instancia de cadena se define como el número máximo de sus caracteres. |
13 | minLength La longitud de una instancia de cadena se define como el número mínimo de sus caracteres. |
14 | pattern Una instancia de cadena se considera válida si la expresión regular coincide con la instancia correctamente. |
Puede comprobar un http://json-schema.orgpara obtener la lista completa de palabras clave que se pueden utilizar para definir un esquema JSON. El esquema anterior se puede utilizar para probar la validez del siguiente código JSON:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]