Tutorial JSON: introducción, estructura, reglas de sintaxis e intercambio de datos
En este tutorial, presentaremos el Formato de intercambio de datos JSON. Esta publicación cubre la estructura de un objeto JSON, las reglas de sintaxis de JSON, el intercambio de datos con JSON y el soporte de lenguajes de programación para JSON.
¿Qué es JSON?
- JSON es un formato de intercambio de datos ligero y legible por humanos.
- JSON se utiliza para almacenar un collection de pares nombre-valor o un lista ordenada de valores
- JSON es útil para serializar objects, y arrays para transmitir a través de la red.
- JSON es muy fácil de analizar y generar y no utiliza una estructura de marcado completa como un XML.
- JSON se convirtió en una alternativa popular al formato XML por su rápida comunicación cliente-servidor asincrónica.
- Todos los archivos JSON tienen la extensión
.json
.
Estructura de un objeto JSON:
Un JSON puede ser:
- Una colección de pares nombre-valor:
los nombre debe ser una string entre comillas dobles; y el valor puede ser otro string, un array, a número, boolean o nulo. El valor en sí puede ser otro JSON object.
- Una colección ordenada:
JSON se puede usar para almacenar una colección ordenada de objetos/valores. La colección es similar a una array de primitivas y una array de objetos en los lenguajes de programación.
Ejemplo JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "firstName": "John", "lastName": "Snow", "age": 25, "children": [], "spouse": null, "address": { "street": "7504 Taylor Drive", "city": "New York City", "state": "New York", "postalCode": "11238" }, "phoneNumbers": [ { "type": "mobile", "number": "212 555-3346" }, { "type": "fax", "number": "646 555-4567" } ] } |
En el ejemplo anterior,
- Los primeros dos pares de nombre y valor asignan una string a otra string.
- El tercer par nombre-valor mapea una string
age
con un número 25. - El cuarto par nombre-valor mapea una string
children
con una array vacía[]
. - El quinto par nombre-valor mapea una string
spouse
con unnull
valor. - El sexto par nombre-valor mapea una string
address
con otro objeto JSON. - El séptimo par nombre-valor mapea una string
phoneNumbers
con una array de objetos JSON.
Reglas de sintaxis JSON:
- UN JSON object está rodeado por llaves
{}
. - Los pares nombre-valor se agrupan por un colon
(:)
y separados por un coma(,)
. - Un array comienza con un corchete izquierdo y termina con un soporte derecho
[]
. - Las comas finales y los ceros iniciales en un número están prohibidos.
- Los formatos octal y hexadecimal no están permitidos.
- Each llave dentro del JSON debe ser único y debe estar entre comillas dobles.
- los boolean type coincide solo con dos valores especiales:
true
yfalse
y los valores NULL están representados por elnull
literal (sin comillas).
Biblioteca integrada JavaScript JSON:
La biblioteca incorporada JavaScript JSON proporciona dos funciones para decodificar y codificar objetos JSON: JSON.parse()
y JSON.stringify()
.
1. JSON.stringify()
devuelve una string JSON correspondiente a un objeto JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html> <head> <title>Encoding a JavaScript object into a JSON string.</title> </head> <body> <div id="json"></div> <script> var obj = { "fruit": "Apple", "types": ["Small", "Medium", "Large"], "quantity": 1000 }; var json_string = JSON.stringify(obj); document.getElementById("json").innerHTML = json_string; </script> </body> </html> |
Resultado:
{“fruit”:”Apple”,
“types”:[“Small”,”Medium”,”Large”],
“quantity”:1000}
2. JSON.parse()
es un método seguro y rápido para decodificar una string JSON como objeto JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html> <body> <h2>Decoding a JSON string into a JavaScript object.</h2> <div id="json"></div> <script> var json_str = '{"fruit":"Apple","types":["Small","Medium","Large"],"quantity":1000}'; try { var obj = JSON.parse(json_string); document.getElementById("json").innerHTML = obj.fruit + ", [" + obj.types + "], " + obj.quantity; } catch (e) { alert("Cannot parse given string"); } </script> </body> </html> |
Resultado:
Apple,
[Small,Medium,Large],
1000
También podemos analizar una string JSON en un objeto JavaScript invocando el eval()
función en la string JSON entre paréntesis. Esto funciona ya que JSON se deriva de JavaScript. eval()
es una función maligna, que debe evitarse a toda costa. Esto es porque eval
puede ejecutar cualquier script malicioso en la máquina del usuario con los privilegios de la persona que llama. Además, el código malicioso puede encontrar el ámbito en el que eval()
fue invocado, haciendo que el sitio web sea vulnerable a los ataques. JSON.parse()
es la alternativa segura y rápida de eval, que falla de forma segura en el código malicioso. JSON está incluido en casi todos los navegadores modernos. Para versiones antiguas de navegadores, use una biblioteca de JavaScript externa como json2.js de Douglas Crockford.
Intercambio de datos con JSON:
JSON se usa principalmente para la transmisión de texto serializado entre un navegador y un servidor.
- Enviando datos:
En el lado del cliente, el objeto JavaScript se convierte primero en una string JSON usando
JSON.stringify()
método. Y la string resultante se transmite a un servidor en el cuerpo de la solicitud o parámetro. - Recibiendo información:
El servidor podría devolver otra string JSON como respuesta. Cualquier JSON recibido del servidor se puede convertir en objetos JavaScript usando el
JSON.parse()
método.
El tipo de medio oficial para JSON es application/json
.
Soporte de lenguajes de programación:
Originalmente, JSON estaba destinado a ser un subconjunto de los lenguajes de JavaScript, pero ahora casi todos los principales lenguajes de programación admiten JSON debido a su formato de datos independiente del lenguaje. Sitio web oficial de JSON enumera las principales bibliotecas JSON disponibles en varios lenguajes de programación que se pueden usar para analizar y generar JSON. Por ejemplo, las bibliotecas JSON más populares para Java son GSON, JSON.simple, Jackson y JSONP.
Eso es todo sobre el formato de intercambio de datos JSON.
Enlaces útiles: