Saltar la navegación

JSON Schema

JSON-Schema (http://json-schema.org ) es un formato JSON para describir datos en JSON. Es en JSON lo que XSD a XML. Ofrece un contrato para definir los datos requeridos para una aplicación dada y la forma de interactuar con él.

Ejemplo

Para hacernos una idea veamos un ejemplo de un esquema JSON sencillo:

{

“$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“]

}

Que validaría como válidos JSONs como este:

{

“id”: 1,

“name”: A green door“,

“price”: 12.50,

“tags”: [“home“,
green“]

}

Y como inválido este por no tener el atributo price:

{

“id”: 1,

“name”: A green door“,

“tags”: [“home“, green“]

}

 

Atributos de un esquema JSON

Podemos ver la referencia completa de la especificación JSON aquí: http://json-schema.org/latest/json-schema-core.html

{

“$schema”: http://json-schema.org/draft-04/schema#“,

“title”: Product“,

“description”: A product from Acme’s catalog“,

“type”: object“,

“properties”: {

},

“required”: [“id“,
name“,
price“]

}

Los atributos más utilizados en un esquema JON son:

  • “$schema”: Nos permite indicar la versión del Schema JSON que queremos usar: 0.4 o 0.3, SOFIA2 se apoya en la versión 0.4 ().
  • “title”: indicar un título con el que identificar el esquema.
  • “description”: Se puede utilizar este atributo para incluir una descripción de lo que va a representar el esquema JSON.
  • “type”: Para indicar el tipo que va a representar el esquema.
  • “properties”: Este atributo es un objeto con las definiciones de propiedades que definen los valores estáticos de una instancia de objeto. Es una lista no ordenada de propiedades. Los nombres de las propiedades se deben cumplir y el valor de las propiedades se definen a partir de un esquema, que debe cumplirse también.
  • “patternProperties”: Este atributo es un objeto con las definiciones de propiedades que definen los valores de una instancia de objeto. Es una lista desordenada de propiedades. Los nombres de las propiedades son patrones de expresiones regulares, las instancias de las propiedades deben cumplir con el patrón definido y el valor de la propiedad con el esquema que define esa propiedad.
  • “additionalProperties”: Permite indicar si la instancia JSON puede contener propiedades que no hayan sido definidas en el esquema. Tiene dos posibles valores (true o false), para indicar si se admite cualquier propiedad o no. Si no se añade la propiedad, se podrá incluir cualquier otra propiedad.
  • “required”: Permite indicar todas las propiedades que son obligatorias para una instancia JSON y que como mínimo debe incluir. Las propiedades se incluirán entre corchetes y separadas por el carácter “,”.
  • “$ref”: Define una URI de un esquema que contienen la completa representación para esa propiedad.