Validar json online

 
 

imagen json

 

En este artículo hablamos de que es json y como validar json online.

Como visualizar y validar JSON online

JSON (JavaScript Object Notation) proporciona una base para definir datos que se van a usar en varias aplicaciones y frameworks de desarrollo.

Desde archivos de configuración, intercambio de datos entre las capas, almacenaje de los datos, etc.

Habitualmente JSON define la sintaxis y el esquema JSON define la estructura. Hoy en día muchos lenguajes de programación y librerías soportan el uso de JSON.

La estructura de un contenido JSON contiene objetos, arrays, y pares de nombre/valor

  • Un objeto se define usando llaves { }
  • Un array se define usando corchetes [ ]
  • Y los pares nombre/valor se definen usando "nombre":valor y se separan con una coma ,

El valor puede ser un número, una cadena de texto (entre comillas), un booleano (true o false), un objeto (definido entre llaves {}), el null, un array (definido por corchetes [ ]), o una fecha.

Por ejemplo veamos el siguiente contenido JSON:

{
    "nombre":"Jose Carlos",
    "coches": [
        { "marca":"Seat", "modelos":[ "Ibiza", "Arona", "Leon" ] },
        { "marca":"Honda", "modelos":[ "Jazz", "HR-V" ] }
    ]
} 

El contenido JSON anterior es un ejemplo típico de un objeto JSON. Consta de una propiedad "nombre" que contiene el valor de texto, y una propiedad "coches" que contiene un array de objetos que a su vez tienen la propiedad "marca" y "modelos" que contiene un array de texto.

Del mismo modo se podría crear un contenido JSON con las motos.

{
    "nombre":"Jose Carlos",
    "coches": [
        { "marca":"Seat", "modelos":[ "Ibiza", "Arona" ] },
        { "marca":"Honda", "modelos":[ "Jazz", "HR-V" ] }
    ],
    "motos": [ { "marca":"Honda", "modelos": [ "CBR500" ] } ]
} 

A continuación se muestra una herramienta sencilla para validar JSON online y para comprobar que una cadena JSON sea correcta.

Para usarlo puedes copiar y pegar el texto json en la caja inferior y hacer clic en el botón Validar JSON

Un ejemplo sencillo de JSON sería el anterior con los coches:

Validar json

 
 

El esquema JSON

Para definir el esquema JSON utilizamos varias palabras como "$schema", "title", "description", "required".

El primer elemento "$schema" se usa de este modo:

{ "$schema":"http://json-schema.org/schema#" }

A continuación se usa el nombre y la descripcíón:

"title":"esquema para los coches", "description":"texto que describe el esquema de los datos asociados a los coches"

Luego se usa el tipo de datos, por ejemplo el objeto y sus propiedades:

"type":"object", "properties": { "name": { "type":"string" } } 

El tipo puede ser "string", "object", "number", "array", "boolean" y "null".

El tipo array

Por defecto, el tipo "array" puede contener cualquier tipo, aunque es conveniente especificarlo mediante "items". Por ejemplo "items": {"type": "string" }. La longitud del array se define con "minItems" y "maxItems" para el mínimo y el máximo de elementos que puede contener.

Se pueden definir los tipos concretos del array en el orden que ocupan, es decir, para una dirección postal (nombre de calle num):

{
   "type":"array",
   "items":[ {"type":"string"}, {"type":"number"} ]
}

Incluso se podría añadir un "enum" con los tipos de vía ...

El tipo number

Como cosa curiosa, el tipo "number" puede ser entero o con coma flotante, pero no una cadena de texto con número.

Para definir el valor mínimo o máximo se utiliza "minimum" y "maximum". Para excluir el valor máximo se usa "exclusiveMaximum":true y "exclusiveMinimum":true para el mínimo.

El tipo string

Para definir la longitud de un tipo "string" podemos usar "minLength" y "maxLength" para fijar su longitud mínima y máxima. Incluso se puede definir una expresión regular con "pattern".

Para definir un conjunto de valores limitado para un tipo de datos, se puede especificar "enum":[1,2,3] o "num":["blanco","negro"]

También se puede restringir la posibilidad de que el contenido JSON añada propiedades adicionales a las definidas por el propio schema. Eso se define con "additionalProperties":false

Tipos combinados

Incluso se puede definir una combinación de schemas utilizando varias palabras reservadas que son: "allOf" (valida contra todos los subesquemas), "anyOf" (valida contra alguno de los subesquemas), "oneOf" (valida contra un esquema concreto) y el "not" (valida que no cumpla el esquema dado).

Así pues para el primer ejemplo de contenido JSON, tendríamos el siguiente esquema JSON:

{ 
   "$schema":"http://json-schema.org/schema#",
   "title":"Coches asignados",
   "description":"Define el contenido json de los coches asignados a una persona",
   "type":"object",
   "properties": {
      "nombre":{"type":"string"},
      "coches":{"type":"array"}
   }
}

Si quisieramos que las propiedades "nombre" y "coches" fueran obligatorias:

"required":["nombre", "coches"]

 

 

javascript

 

 

Comentarios

Deja un comentario