JSON - Guía rápida
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 de medio de Internet JSON es application/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 otro ejemplo. Guardemos el siguiente código comojson.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:
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 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:
Collection of name/value pairs - Esta estructura de datos es compatible con diferentes lenguajes de programación.
Ordered list of values - Incluye matriz, lista, vector o secuencia, etc.
El formato JSON admite los siguientes tipos de datos:
No Señor. | Tipo y descripción |
---|---|
1 | Number formato de punto flotante de doble precisión en JavaScript |
2 | String Unicode entre comillas dobles con escape de barra invertida |
3 | Boolean verdadero o falso |
4 | Array una secuencia ordenada de valores |
5 | Value puede ser una cadena, un número, verdadero o falso, nulo, etc. |
6 | Object una colección desordenada de pares clave: valor |
7 | Whitespace se puede usar entre cualquier par de tokens |
8 | null 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 octal y hexadecimal.
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 | Integer Dígitos 1-9, 0 y positivo o negativo |
2 | Fraction Fracciones como .3, .9 |
3 | Exponent 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
Es una secuencia de cero o más caracteres Unicode entre comillas dobles con escape de barra invertida.
El carácter es una cadena de un solo carácter, es decir, una cadena de longitud 1.
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 | n nueva línea |
7 | r retorno de carro |
8 | t pestaña horizontal |
9 | u 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 entre corchetes, lo que significa que la matriz comienza con. [. y termina con.] ..
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 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)
- string
- boolean
- array
- object
- null
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();
Creación de un objeto con atributo bookname con valor en cadena, atributo pricecon valor numérico. Se accede al atributo usando '.' Operador -
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 usando IE o cualquier otro navegador habilitado para . Produce el siguiente resultado:
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 usando IE o cualquier otro navegador habilitado para . Produce el siguiente resultado:
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) |
.RED | 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 product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]
}
Comprobemos varias palabras clave importantes que se pueden usar en este esquema:
No Señor. | Palabra clave y descripción |
---|---|
1 | $schema La palabra clave $ schema indica que este esquema está escrito de acuerdo con el borrador de la especificación v4. |
2 | title Utilizará esto para dar un título a su esquema. |
3 | description Una pequeña descripción del esquema. |
4 | type La palabra clave type define la primera restricción en nuestros datos JSON: tiene que ser un objeto JSON. |
5 | properties Define varias claves y sus tipos de valor, valores mínimos y máximos que se utilizarán en el archivo JSON. |
6 | required Esto mantiene una lista de propiedades requeridas. |
7 | minimum Esta es la restricción que se aplicará al valor y representa el valor mínimo aceptable. |
8 | exclusiveMinimum Si "exclusivoMínimo" está presente y tiene un valor booleano verdadero, la instancia es válida si es estrictamente mayor que el valor de "mínimo". |
9 | maximum Ésta es la restricción que se aplicará al valor y representa el valor máximo aceptable. |
10 | exclusiveMaximum Si "exclusiveMaximum" está presente y tiene un valor booleano verdadero, la instancia es válida si es estrictamente menor que el valor de "maximum". |
11 | multipleOf Una instancia numérica es válida contra "multipleOf" si el resultado de la división de la instancia por el valor de esta palabra clave es un número entero. |
12 | maxLength La longitud de una instancia de cadena se define como el número máximo de sus caracteres. |
13 | minLength La longitud de una instancia de cadena se define como el número mínimo de sus caracteres. |
14 | pattern Una instancia de cadena se considera válida si la expresión regular coincide con la instancia correctamente. |
Puede comprobar un http://json-schema.orgpara obtener la lista completa de palabras clave que se pueden utilizar para definir un esquema JSON. El esquema anterior se puede utilizar para probar la validez del siguiente código JSON:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
JSON y XML son formatos legibles por humanos y son independientes del lenguaje. Ambos tienen soporte para la creación, lectura y decodificación en situaciones del mundo real. Podemos comparar JSON con XML, basándonos en los siguientes factores:
Verboso
XML es más detallado que JSON, por lo que es más rápido escribir JSON para programadores.
Uso de matrices
XML se utiliza para describir los datos estructurados, que no incluyen matrices, mientras que JSON incluye matrices.
Analizando
El método eval de JavaScript analiza JSON. Cuando se aplica a JSON, eval devuelve el objeto descrito.
Ejemplo
Ejemplos individuales de XML y JSON -
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
Este capítulo cubre cómo codificar y decodificar objetos JSON utilizando el lenguaje de programación PHP. Comencemos por preparar el entorno para comenzar nuestra programación con PHP para JSON.
Medio ambiente
A partir de PHP 5.2.0, la extensión JSON está incluida y compilada en PHP de forma predeterminada.
Funciones JSON
Función | Bibliotecas |
---|---|
json_encode | Devuelve la representación JSON de un valor. |
json_decode | Decodifica una cadena JSON. |
json_last_error | Devuelve el último error ocurrido. |
Codificación de JSON en PHP (json_encode)
La función PHP json_encode () se utiliza para codificar JSON en PHP. Esta función devuelve la representación JSON de un valor en caso de éxito o FALSO en caso de error.
Sintaxis
string json_encode ( $value [, $options = 0 ] )
Parámetros
value- El valor que se codifica. Esta función solo funciona con datos codificados en UTF-8.
options - Este valor opcional es una máscara de bits que consta de JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT.
Ejemplo
El siguiente ejemplo muestra cómo convertir una matriz en JSON con PHP:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Mientras se ejecuta, esto producirá el siguiente resultado:
{"a":1,"b":2,"c":3,"d":4,"e":5}
El siguiente ejemplo muestra cómo los objetos PHP se pueden convertir en JSON:
<?php
class Emp {
public $name = "";
public $hobbies = ""; public $birthdate = "";
}
$e = new Emp(); $e->name = "sachin";
$e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e);
?>
Mientras se ejecuta, esto producirá el siguiente resultado:
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
Decodificación de JSON en PHP (json_decode)
La función PHP json_decode () se utiliza para decodificar JSON en PHP. Esta función devuelve el valor decodificado de json al tipo PHP apropiado.
Sintaxis
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
Parámetros
json_string - Es una cadena codificada que debe ser datos codificados en UTF-8.
assoc - Es un parámetro de tipo booleano, cuando se establece en TRUE, los objetos devueltos se convertirán en matrices asociativas.
depth - Es un parámetro de tipo entero que especifica la profundidad de recursividad.
options - Es una máscara de bits de tipo entero de decodificación JSON, se admite JSON_BIGINT_AS_STRING.
Ejemplo
El siguiente ejemplo muestra cómo se puede usar PHP para decodificar objetos JSON:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Mientras se ejecuta, producirá el siguiente resultado:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Este capítulo cubre cómo codificar y decodificar objetos JSON utilizando el lenguaje de programación Perl. Comencemos por preparar el entorno para comenzar nuestra programación con Perl para JSON.
Medio ambiente
Antes de comenzar a codificar y decodificar JSON con Perl, debe instalar el módulo JSON, que se puede obtener de CPAN. Una vez que haya descargado JSON-2.53.tar.gz o cualquier otra versión más reciente, siga los pasos que se mencionan a continuación:
$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install
Funciones JSON
Función | Bibliotecas |
---|---|
encode_json | Convierte la estructura de datos de Perl dada en una cadena binaria codificada en UTF-8. |
decode_json | Decodifica una cadena JSON. |
to_json | Convierte la estructura de datos de Perl dada en una cadena json. |
from_json | Espera una cadena json e intenta analizarla, devolviendo la referencia resultante. |
convert_blessed | Use esta función con valor verdadero para que Perl pueda usar el método TO_JSON en la clase del objeto para convertir un objeto en JSON. |
Codificación de JSON en Perl (encode_json)
La función encode_json () de Perl convierte la estructura de datos de Perl dada en una cadena binaria codificada en UTF-8.
Sintaxis
$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);
Ejemplo
El siguiente ejemplo muestra matrices en JSON con Perl:
#!/usr/bin/perl
use JSON;
my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
my $json = encode_json \%rec_hash; print "$json\n";
Mientras se ejecuta, esto producirá el siguiente resultado:
{"e":5,"c":3,"a":1,"b":2,"d":4}
El siguiente ejemplo muestra cómo los objetos de Perl se pueden convertir en JSON:
#!/usr/bin/perl
package Emp;
sub new {
my $class = shift; my $self = {
name => shift,
hobbies => shift,
birthdate => shift,
};
bless $self, $class;
return $self; } sub TO_JSON { return { %{ shift() } }; } package main; use JSON; my $JSON = JSON->new->utf8;
$JSON->convert_blessed(1); $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm");
$json = $JSON->encode($e); print "$json\n";
Al ejecutar, producirá el siguiente resultado:
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
Decodificando JSON en Perl (decode_json)
La función decode_json () de Perl se utiliza para decodificar JSON en Perl. Esta función devuelve el valor decodificado de json a un tipo de Perl apropiado.
Sintaxis
$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)
Ejemplo
El siguiente ejemplo muestra cómo se puede utilizar Perl para decodificar objetos JSON. Aquí deberá instalar el módulo Data :: Dumper si aún no lo tiene en su máquina.
#!/usr/bin/perl
use JSON;
use Data::Dumper;
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $text = decode_json($json); print Dumper($text);
Al ejecutar, producirá el siguiente resultado:
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
Este capítulo cubre cómo codificar y decodificar objetos JSON utilizando el lenguaje de programación Python. Comencemos por preparar el entorno para comenzar nuestra programación con Python para JSON.
Medio ambiente
Antes de comenzar a codificar y decodificar JSON con Python, debe instalar cualquiera de los módulos JSON disponibles. Para este tutorial, hemos descargado e instalado Demjson de la siguiente manera:
$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install
Funciones JSON
Función | Bibliotecas |
---|---|
codificar | Codifica el objeto Python en una representación de cadena JSON. |
descodificar | Decodifica una cadena codificada en JSON en un objeto Python. |
Codificar JSON en Python (codificar)
La función encode () de Python codifica el objeto de Python en una representación de cadena JSON.
Sintaxis
demjson.encode(self, obj, nest_level=0)
Ejemplo
El siguiente ejemplo muestra matrices en JSON con Python.
#!/usr/bin/python
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
Mientras se ejecuta, esto producirá el siguiente resultado:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
Decodificar JSON en Python (decodificar)
Python puede usar la función demjson.decode () para decodificar JSON. Esta función devuelve el valor decodificado de json a un tipo de Python apropiado.
Sintaxis
demjson.decode(self, txt)
Ejemplo
El siguiente ejemplo muestra cómo se puede usar Python para decodificar objetos JSON.
#!/usr/bin/python
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
Al ejecutar, producirá el siguiente resultado:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Este capítulo cubre cómo codificar y decodificar objetos JSON utilizando el lenguaje de programación Ruby. Comencemos por preparar el entorno para comenzar nuestra programación con Ruby para JSON.
Medio ambiente
Antes de comenzar a codificar y decodificar JSON con Ruby, debe instalar cualquiera de los módulos JSON disponibles para Ruby. Es posible que necesite instalar Ruby gem, pero si está ejecutando la última versión de Ruby, entonces debe tener gem ya instalado en su máquina, de lo contrario, sigamos el siguiente paso asumiendo que ya tiene Gem instalado
$gem install json
Analizando JSON usando Ruby
El siguiente ejemplo muestra que las primeras 2 claves contienen valores de cadena y las últimas 3 claves contienen matrices de cadenas. Guardemos el siguiente contenido en un archivo llamadoinput.json.
{
"President": "Alan Isaac",
"CEO": "David Richardson",
"India": [
"Sachin Tendulkar",
"Virender Sehwag",
"Gautam Gambhir"
],
"Srilanka": [
"Lasith Malinga",
"Angelo Mathews",
"Kumar Sangakkara"
],
"England": [
"Alastair Cook",
"Jonathan Trott",
"Kevin Pietersen"
]
}
A continuación se muestra un programa Ruby que se utilizará para analizar el documento JSON mencionado anteriormente:
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
json = File.read('input.json')
obj = JSON.parse(json)
pp obj
Al ejecutar, producirá el siguiente resultado:
{
"President"=>"Alan Isaac",
"CEO"=>"David Richardson",
"India"=>
["Sachin Tendulkar", "Virender Sehwag", "Gautam Gambhir"],
"Srilanka"=>
["Lasith Malinga ", "Angelo Mathews", "Kumar Sangakkara"],
"England"=>
["Alastair Cook", "Jonathan Trott", "Kevin Pietersen"]
}
Este capítulo cubre cómo codificar y decodificar objetos JSON utilizando el lenguaje de programación Java. Comencemos por preparar el entorno para comenzar nuestra programación con Java para JSON.
Medio ambiente
Antes de comenzar a codificar y decodificar JSON con Java, debe instalar cualquiera de los módulos JSON disponibles. Para este tutorial, hemos descargado e instalado JSON.simple y hemos agregado la ubicación dejson-simple-1.1.1.jar archivo a la variable de entorno CLASSPATH.
Mapeo entre entidades JSON y Java
JSON.simple mapea entidades del lado izquierdo al lado derecho mientras se decodifica o analiza, y mapea entidades de derecha a izquierda durante la codificación.
JSON | Java |
---|---|
cuerda | java.lang.String |
número | java.lang.Number |
verdadero | falso | java.lang.Boolean |
nulo | nulo |
formación | java.util.List |
objeto | java.util.Map |
Al decodificar, la clase concreta predeterminada de java.util.List es org.json.simple.JSONArray y la clase concreta predeterminada de java.util.Map es org.json.simple.JSONObject .
Codificación de JSON en Java
A continuación se muestra un ejemplo simple para codificar un objeto JSON utilizando Java JSONObject, que es una subclase de java.util.HashMap. No se proporciona ningún pedido. Si necesita el orden estricto de los elementos, use el método JSONValue.toJSONString (map) con una implementación de mapa ordenada, como java.util.LinkedHashMap.
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
Al compilar y ejecutar el programa anterior, se generará el siguiente resultado:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
A continuación se muestra otro ejemplo que muestra una transmisión de objetos JSON utilizando Java JSONObject:
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
Al compilar y ejecutar el programa anterior, se genera el siguiente resultado:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Decodificando JSON en Java
El siguiente ejemplo hace uso de JSONObject y JSONArray donde JSONObject es un java.util.Map y JSONArray es un java.util.List, por lo que puede acceder a ellos con operaciones estándar de Map o List.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
Al compilar y ejecutar el programa anterior, se generará el siguiente resultado:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
AJAX es JavaScript asincrónico y XML, que se utiliza en el lado del cliente como un grupo de técnicas de desarrollo web interrelacionadas, para crear aplicaciones web asincrónicas. Según el modelo AJAX, las aplicaciones web pueden enviar y recuperar datos de un servidor de forma asincrónica sin interferir con la visualización y el comportamiento de la página existente.
Muchos desarrolladores usan JSON para pasar actualizaciones AJAX entre el cliente y el servidor. Los sitios web que actualizan resultados deportivos en vivo pueden considerarse un ejemplo de AJAX. Si estas puntuaciones deben actualizarse en el sitio web, deben almacenarse en el servidor para que la página web pueda recuperar la puntuación cuando sea necesario. Aquí es donde podemos hacer uso de datos con formato JSON.
Cualquier dato que se actualice usando AJAX se puede almacenar usando el formato JSON en el servidor web. AJAX se utiliza para que JavaScript pueda recuperar estos archivos JSON cuando sea necesario, analizarlos y realizar una de las siguientes operaciones:
Almacene los valores analizados en las variables para su posterior procesamiento antes de mostrarlos en la página web.
Asigna directamente los datos a los elementos DOM en la página web, para que se muestren en el sitio web.
Ejemplo
El siguiente código muestra JSON con AJAX. Guardarlo comoajax.htmarchivo. Aquí, la función de carga loadJSON () se usa de forma asincrónica para cargar datos JSON.
<html>
<head>
<meta content = "text/html; charset = ISO-8859-1" http-equiv = "content-type">
<script type = "application/javascript">
function loadJSON() {
var data_file = "http://www.tutorialspoint.com/json/data.json";
var http_request = new XMLHttpRequest();
try{
// Opera 8.0+, Firefox, Chrome, Safari
http_request = new XMLHttpRequest();
}catch (e) {
// Internet Explorer Browsers
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4 ) {
// Javascript function JSON.parse to parse JSON data
var jsonObj = JSON.parse(http_request.responseText);
// jsonObj variable now contains the data structure and can
// be accessed as jsonObj.name and jsonObj.country.
document.getElementById("Name").innerHTML = jsonObj.name;
document.getElementById("Country").innerHTML = jsonObj.country;
}
}
http_request.open("GET", data_file, true);
http_request.send();
}
</script>
<title>tutorialspoint.com JSON</title>
</head>
<body>
<h1>Cricketer Details</h1>
<table class = "src">
<tr><th>Name</th><th>Country</th></tr>
<tr><td><div id = "Name">Sachin</div></td>
<td><div id = "Country">India</div></td></tr>
</table>
<div class = "central">
<button type = "button" onclick = "loadJSON()">Update Details </button>
</div>
</body>
</html>
A continuación se muestra el archivo de entrada data.json, teniendo datos en formato JSON que se subirán de forma asincrónica cuando hagamos clic en el Update Detailbotón. Este archivo se guarda enhttp://www.tutorialspoint.com/json/
{"name": "Brett", "country": "Australia"}
El código HTML anterior generará la siguiente pantalla, donde puede verificar AJAX en acción:
Detalles del jugador de críquet
Nombre | País |
---|---|
Sachin
|
India
|
Cuando haces clic en el Update Detail, debería obtener un resultado similar al siguiente. Puede probar JSON con AJAX usted mismo, siempre que su navegador admita Javascript.
Detalles del jugador de críquet
Nombre | País |
---|---|
Brett
|
Australia
|