Saltar al contenido

JSON – Guía rápida

octubre 20, 2021

JSON o JavaScript Object Notation es un estándar abierto ligero basado en texto diseñado para el intercambio de datos legibles por humanos. Los programadores conocen las convenciones utilizadas por JSON, que incluyen C, C ++, Java, Python, Perl, etc.

  • JSON son las siglas de JavaScript Object Notation.

  • El formato fue especificado por Douglas Crockford.

  • Fue diseñado para el intercambio de datos legibles por humanos.

  • Se ha ampliado desde el lenguaje de secuencias de comandos JavaScript.

  • La extensión del nombre de archivo es .json.

  • El tipo JSON Internet Media es aplicación / json.

  • El Identificador de tipo uniforme es public.json.

Usos de JSON

  • Se utiliza al escribir aplicaciones basadas en JavaScript que incluyen extensiones de navegador y sitios web.

  • El formato JSON se utiliza para serializar y transmitir datos estructurados a través de una conexión de red.

  • Se utiliza principalmente para transmitir datos entre un servidor y aplicaciones web.

  • Los servicios web y las API utilizan el formato JSON para proporcionar datos públicos.

  • Se puede utilizar con lenguajes de programación modernos.

Características de JSON

  • JSON es fácil de leer y escribir.
  • Es un formato de intercambio ligero basado en texto.
  • JSON es independiente del idioma.

Ejemplo simple en JSON

El siguiente ejemplo muestra cómo usar JSON para almacenar información relacionada con libros según su tema y edición.

{
   "book": [
	
      {
         "id":"01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      },
	
      {
         "id":"07",
         "language": "C++",
         "edition": "second",
         "author": "E.Balagurusamy"
      }
   ]
}

Después de comprender el programa anterior, probaremos con otro ejemplo. Guardemos el siguiente código como json.htm

<html>
   <head>
      <title>JSON example</title>
      <script language = "javascript" >
         var object1 = { "language" : "Java", "author"  : "herbert schildt" };
         document.write("<h1>JSON with JavaScript example</h1>");
         document.write("<br>");
         document.write("<h3>Language = " + object1.language+"</h3>");  
         document.write("<h3>Author = " + object1.author+"</h3>");   

         var object2 = { "language" : "C++", "author"  : "E-Balagurusamy" };
         document.write("<br>");
         document.write("<h3>Language = " + object2.language+"</h3>");  
         document.write("<h3>Author = " + object2.author+"</h3>");   
  
         document.write("<hr />");
         document.write(object2.language + " programming language can be studied " + "from book written by " + object2.author);
         document.write("<hr />");
      </script>
   </head>
   
   <body>
   </body>
</html>

Ahora intentemos abrir json.htm usando IE o cualquier otro navegador habilitado para javascript que produzca el siguiente resultado:

json ejemplo de demostración

Puede consultar el capítulo Objetos JSON para obtener más información sobre los objetos JSON.

Echemos un vistazo rápido a la sintaxis básica de JSON. La sintaxis JSON se considera básicamente como un subconjunto de la sintaxis JavaScript; incluye lo siguiente:

  • Los datos se representan en pares de nombre / valor.

  • Las llaves contienen objetos y cada nombre va seguido de ‘:’ (dos puntos), los pares de nombre / valor están separados por, (coma).

  • Los corchetes contienen matrices y los valores están separados por (coma).

A continuación se muestra un ejemplo simple:

{
   "book": [

      {
         "id": "01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      },

      {
         "id": "07",
         "language": "C++",
         "edition": "second",
         "author": "E.Balagurusamy"
      }

   ]
}

JSON admite las siguientes dos estructuras de datos:

  • Colección de pares de nombre / valor – Esta estructura de datos es compatible con diferentes lenguajes de programación.

  • Lista ordenada de valores – Incluye matriz, lista, vector o secuencia, etc.

El formato JSON admite los siguientes tipos de datos:

No Señor. Tipo y descripción
1

Número

formato de punto flotante de doble precisión en JavaScript

2

Cuerda

Unicode entre comillas dobles con escape de barra invertida

3

Booleano

verdadero o falso

4

Formación

una secuencia ordenada de valores

5

Valor

puede ser una cadena, un número, verdadero o falso, nulo, etc.

6

Objeto

una colección desordenada de pares clave: valor

7

Espacio en blanco

se puede utilizar entre cualquier par de tokens

8

nulo

vacío

Número

  • Es un formato de punto flotante de doble precisión en JavaScript y depende de la implementación.

  • No se utilizan formatos octales y hexadecimales.

  • No se utiliza NaN o Infinity en Number.

La siguiente tabla muestra los tipos de números:

No Señor. Tipo y descripción
1

Entero

Dígitos del 1 al 9, 0 y positivo o negativo

2

Fracción

Fracciones como .3, .9

3

Exponente

Exponente como e, e +, e-, E, E +, E-

Sintaxis

var json-object-name = { string : number_value, .......}

Ejemplo

Ejemplo que muestra el tipo de datos numérico, el valor no se debe citar –

var obj = {marks: 97}

Cuerda

La tabla muestra varios caracteres especiales que puede usar en cadenas de un documento JSON:

No Señor. Tipo y descripción
1

«

doble cita

2

barra invertida

3

/

barra inclinada

4

B

retroceso

5

F

formulario de alimentación

6

norte

nueva línea

7

r

retorno de carro

8

t

pestaña horizontal

9

tu

cuatro dígitos hexadecimales

Sintaxis

var json-object-name = { string : "string value", .......}

Ejemplo

Ejemplo que muestra el tipo de datos de cadena –

var obj = {name: 'Amit'}

Booleano

Incluye valores verdaderos o falsos.

Sintaxis

var json-object-name = { string : true/false, .......}

Ejemplo

var obj = {name: 'Amit', marks: 97, distinction: true}

Formación

  • Es una colección ordenada de valores.

  • Estos están encerrados entre corchetes, lo que significa que la matriz comienza con.[. and ends with .]..

  • Los valores están separados por (coma).

  • La indexación de matrices se puede iniciar en 0 o 1.

  • Las matrices deben usarse cuando los nombres de las claves son números enteros secuenciales.

Sintaxis

[ value, .......]

Ejemplo

Ejemplo que muestra una matriz que contiene varios objetos:

{
   "books": [
      { "language":"Java" , "edition":"second" },
      { "language":"C++" , "lastName":"fifth" },
      { "language":"C" , "lastName":"third" }
   ]
}

Objeto

  • Es un conjunto desordenado de pares de nombre / valor.

  • Los objetos se encierran entre llaves, es decir, comienzan con ‘{‘ y terminan con ‘}’.

  • Cada nombre va seguido de ‘:’ (dos puntos) y los pares clave / valor están separados por, (coma).

  • Las claves deben ser cadenas y deben ser diferentes entre sí.

  • Los objetos deben usarse cuando los nombres de las claves son cadenas arbitrarias.

Sintaxis

{ string : value, .......}

Ejemplo

Ejemplo de objeto:

{
   "id": "011A",
   "language": "JAVA",
   "price": 500,
}

Espacio en blanco

Se puede insertar entre cualquier par de tokens. Se puede agregar para hacer un código más legible. El ejemplo muestra una declaración con y sin espacios en blanco –

Sintaxis

{string:" ",....}

Ejemplo

var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}

nulo

Significa tipo vacío.

Sintaxis

null

Ejemplo

var i = null;

if(i == 1) {
   document.write("<h1>value is 1</h1>");
} else {
   document.write("<h1>value is null</h1>");
}

Valor JSON

Incluye –

  • número (entero o punto flotante)
  • cuerda
  • booleano
  • formación
  • objeto
  • nulo

Sintaxis

String | Number | Object | Array | TRUE | FALSE | NULL

Ejemplo

var i = 1;
var j = "sachin";
var k = null;

Crear objetos simples

Los objetos JSON se pueden crear con JavaScript. Veamos las diversas formas de crear objetos JSON usando JavaScript:

  • Creación de un objeto vacío –
var JSONObj = {};
  • Creación de un nuevo objeto –
var JSONObj = new Object();
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

Este es un ejemplo que muestra la creación de un objeto en javascript usando JSON, guarde el siguiente código como json_object.htm

<html>
   <head>
      <title>Creating Object JSON with JavaScript</title>
      <script language = "javascript" >
         var JSONObj = { "name" : "tutorialspoint.com", "year"  : 2005 };
		
         document.write("<h1>JSON with JavaScript example</h1>");
         document.write("<br>");
         document.write("<h3>Website Name = "+JSONObj.name+"</h3>");  
         document.write("<h3>Year = "+JSONObj.year+"</h3>");  
      </script>
   </head>
   
   <body>
   </body>	
</html>

Ahora intentemos abrir Json Object usando IE o cualquier otro navegador habilitado para javaScript. Produce el siguiente resultado:

Objetos Json

Creación de objetos de matriz

El siguiente ejemplo muestra la creación de un objeto de matriz en javascript usando JSON, guarde el siguiente código como json_array_object.htm

<html>
   <head>
      <title>Creation of array object in javascript using JSON</title>
      <script language = "javascript" >
         document.writeln("<h2>JSON array object</h2>");
         var books = { "Pascal" : [ 
            { "Name"  : "Pascal Made Simple", "price" : 700 },
            { "Name"  : "Guide to Pascal", "price" : 400 }],  
				
            "Scala"  : [
               { "Name"  : "Scala for the Impatient", "price" : 1000 }, 
               { "Name"  : "Scala in Depth", "price" : 1300 }]    
         }    
         var i = 0
         document.writeln("<table border="2"><tr>");
			
         for(i = 0;i<books.Pascal.length;i++) {	
            document.writeln("<td>");
            document.writeln("<table border="1" width = 100 >");
            document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Pascal[i].Name+"</td></tr>");
            document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Pascal[i].price +"</td></tr>");
            document.writeln("</table>");
            document.writeln("</td>");
         }

         for(i = 0;i<books.Scala.length;i++) {
            document.writeln("<td>");
            document.writeln("<table border="1" width = 100 >");
            document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Scala[i].Name+"</td></tr>");
            document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Scala[i].price+"</td></tr>");
            document.writeln("</table>");
            document.writeln("</td>");
         }
			
         document.writeln("</tr></table>");
      </script>
   </head>
   
   <body>
   </body>
</html>

Ahora intentemos abrir Json Array Object usando IE o cualquier otro navegador habilitado para javaScript. Produce el siguiente resultado:

objetos de matriz json

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)
.NETO 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...
close