Promoción verano: 6 meses de acceso a todos los cursos online de programación con el 50% de descuento
offer

Buscar
alojamiento WordPress
Buscamos patrocinadores

Espacio publicitario para patrocinadores.

Contacta con nosotros para disponer de más información.

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"]