JSON - Guida rapida
JSON o JavaScript Object Notation è uno standard aperto basato su testo leggero progettato per lo scambio di dati leggibili dall'uomo. Le convenzioni utilizzate da JSON sono note ai programmatori, che includono C, C ++, Java, Python, Perl, ecc.
JSON sta per JavaScript Object Notation.
Il formato è stato specificato da Douglas Crockford.
È stato progettato per lo scambio di dati leggibili dall'uomo.
È stato esteso dal linguaggio di scripting JavaScript.
L'estensione del nome del file è .json.
Il tipo di supporto Internet JSON è application/json.
L'identificatore di tipo uniforme è public.json.
Usi di JSON
Viene utilizzato durante la scrittura di applicazioni basate su JavaScript che includono estensioni del browser e siti Web.
Il formato JSON viene utilizzato per serializzare e trasmettere dati strutturati sulla connessione di rete.
Viene utilizzato principalmente per trasmettere dati tra un server e le applicazioni web.
I servizi Web e le API utilizzano il formato JSON per fornire dati pubblici.
Può essere utilizzato con i moderni linguaggi di programmazione.
Caratteristiche di JSON
- JSON è facile da leggere e scrivere.
- È un formato di interscambio basato su testo leggero.
- JSON è indipendente dalla lingua.
Semplice esempio in JSON
L'esempio seguente mostra come utilizzare JSON per archiviare le informazioni relative ai libri in base all'argomento e all'edizione.
{
"book": [
{
"id":"01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id":"07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
Dopo aver compreso il programma sopra, proveremo un altro esempio. Salviamo il codice seguente comejson.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>
Ora proviamo ad aprire json.htm usando IE o qualsiasi altro browser abilitato a javascript che produca il seguente risultato:
È possibile fare riferimento al capitolo sugli oggetti JSON per ulteriori informazioni sugli oggetti JSON.
Diamo una rapida occhiata alla sintassi di base di JSON. La sintassi JSON è fondamentalmente considerata come un sottoinsieme della sintassi JavaScript; include quanto segue:
I dati sono rappresentati in coppie nome / valore.
Le parentesi graffe contengono oggetti e ogni nome è seguito da ":" (due punti), le coppie nome / valore sono separate da, (virgola).
Le parentesi quadre contengono le matrici ei valori sono separati da, (virgola).
Di seguito è riportato un semplice esempio:
{
"book": [
{
"id": "01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id": "07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
JSON supporta le seguenti due strutture di dati:
Collection of name/value pairs - Questa struttura dati è supportata da diversi linguaggi di programmazione.
Ordered list of values - Include array, elenco, vettore o sequenza ecc.
Il formato JSON supporta i seguenti tipi di dati:
Sr.No. | Tipo e descrizione |
---|---|
1 | Number formato a virgola mobile a doppia precisione in JavaScript |
2 | String Unicode tra virgolette e backslash escape |
3 | Boolean vero o falso |
4 | Array una sequenza ordinata di valori |
5 | Value può essere una stringa, un numero, vero o falso, null ecc |
6 | Object una raccolta non ordinata di coppie chiave: valore |
7 | Whitespace può essere utilizzato tra qualsiasi coppia di gettoni |
8 | null vuoto |
Numero
È un formato a virgola mobile a doppia precisione in JavaScript e dipende dall'implementazione.
I formati ottale ed esadecimale non vengono utilizzati.
Nessun NaN o Infinity viene utilizzato in Number.
La tabella seguente mostra i tipi di numero:
Sr.No. | Tipo e descrizione |
---|---|
1 | Integer Cifre 1-9, 0 e positivo o negativo |
2 | Fraction Frazioni come .3, .9 |
3 | Exponent Esponente come e, e +, e-, E, E +, E- |
Sintassi
var json-object-name = { string : number_value, .......}
Esempio
Esempio che mostra il tipo di dati numerico, il valore non deve essere citato -
var obj = {marks: 97}
Corda
È una sequenza di zero o più caratteri Unicode tra virgolette doppie con la barra rovesciata di escape.
Il carattere è una singola stringa di caratteri, ovvero una stringa di lunghezza 1.
La tabella mostra vari caratteri speciali che puoi usare nelle stringhe di un documento JSON -
Sr.No. | Tipo e descrizione |
---|---|
1 | " doppia citazione |
2 | \ barra rovesciata |
3 | / barra |
4 | b backspace |
5 | f avanzamento modulo |
6 | n nuova linea |
7 | r ritorno a capo |
8 | t scheda orizzontale |
9 | u quattro cifre esadecimali |
Sintassi
var json-object-name = { string : "string value", .......}
Esempio
Esempio che mostra il tipo di dati stringa -
var obj = {name: 'Amit'}
Booleano
Include valori veri o falsi.
Sintassi
var json-object-name = { string : true/false, .......}
Esempio
var obj = {name: 'Amit', marks: 97, distinction: true}
Vettore
È una raccolta ordinata di valori.
Questi sono racchiusi tra parentesi quadre, il che significa che l'array inizia con. [. e termina con.] ..
I valori sono separati da, (virgola).
L'indicizzazione degli array può essere avviata da 0 o 1.
Gli array devono essere utilizzati quando i nomi delle chiavi sono numeri interi sequenziali.
Sintassi
[ value, .......]
Esempio
Esempio che mostra un array contenente più oggetti -
{
"books": [
{ "language":"Java" , "edition":"second" },
{ "language":"C++" , "lastName":"fifth" },
{ "language":"C" , "lastName":"third" }
]
}
Oggetto
È un insieme non ordinato di coppie nome / valore.
Gli oggetti sono racchiusi tra parentesi graffe, ovvero inizia con "{" e termina con "}".
Ogni nome è seguito da ":" (due punti) e le coppie chiave / valore sono separate da, (virgola).
Le chiavi devono essere stringhe e devono essere diverse l'una dall'altra.
Gli oggetti dovrebbero essere usati quando i nomi delle chiavi sono stringhe arbitrarie.
Sintassi
{ string : value, .......}
Esempio
Esempio che mostra l'oggetto -
{
"id": "011A",
"language": "JAVA",
"price": 500,
}
Spazio bianco
Può essere inserito tra qualsiasi coppia di gettoni. Può essere aggiunto per rendere un codice più leggibile. L'esempio mostra la dichiarazione con e senza spazi bianchi -
Sintassi
{string:" ",....}
Esempio
var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}
nullo
Significa tipo vuoto.
Sintassi
null
Esempio
var i = null;
if(i == 1) {
document.write("<h1>value is 1</h1>");
} else {
document.write("<h1>value is null</h1>");
}
Valore JSON
Include:
- numero (intero o virgola mobile)
- string
- boolean
- array
- object
- null
Sintassi
String | Number | Object | Array | TRUE | FALSE | NULL
Esempio
var i = 1;
var j = "sachin";
var k = null;
Creazione di oggetti semplici
Gli oggetti JSON possono essere creati con JavaScript. Vediamo i vari modi per creare oggetti JSON utilizzando JavaScript -
- Creazione di un oggetto vuoto -
var JSONObj = {};
- Creazione di un nuovo oggetto -
var JSONObj = new Object();
Creazione di un oggetto con attributo bookname con valore in stringa, attributo pricecon valore numerico. Si accede all'attributo utilizzando "." Operatore -
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
Questo è un esempio che mostra la creazione di un oggetto in javascript utilizzando JSON, salva il codice seguente come 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>
Ora proviamo ad aprire Json Object usando IE o qualsiasi altro browser abilitato a javaScript. Produce il seguente risultato:
Creazione di oggetti array
L'esempio seguente mostra la creazione di un oggetto array in javascript utilizzando JSON, salva il codice seguente come 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>
Ora proviamo ad aprire Json Array Object usando IE o qualsiasi altro browser abilitato a javaScript. Produce il seguente risultato:
Lo schema JSON è una specifica per il formato basato su JSON per la definizione della struttura dei dati JSON. È stato scritto sotto la bozza IETF che è scaduta nel 2011. Schema JSON -
- Descrive il formato dei dati esistente.
- Documentazione chiara, leggibile dall'uomo e dalla macchina.
- Validazione strutturale completa, utile per test automatizzati.
- Convalida strutturale completa, convalida dei dati inviati dal cliente.
Librerie di convalida dello schema JSON
Attualmente sono disponibili diversi validatori per diversi linguaggi di programmazione. Attualmente il validatore di schemi JSON più completo e conforme disponibile è JSV.
Le lingue | Biblioteche |
---|---|
C | WJElement (LGPLv3) |
Giava | json-schema-validator (LGPLv3) |
.NETTO | Json.NET (MIT) |
ActionScript 3 | Frigga (MIT) |
Haskell | aeson-schema (MIT) |
Pitone | Jsonschema |
Rubino | autoparse (ASL 2.0); ruby-jsonschema (MIT) |
PHP | php-json-schema (MIT). json-schema (Berkeley) |
JavaScript | Ordinato (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modificato BSD o AFL 2.0); schema.js. |
Esempio di schema JSON
Di seguito è riportato uno schema JSON di base, che copre una descrizione classica del catalogo dei prodotti:
{
"$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"]
}
Controlliamo varie parole chiave importanti che possono essere utilizzate in questo schema:
Sr.No. | Parola chiave e descrizione |
---|---|
1 | $schema La parola chiave $ schema afferma che questo schema è scritto in base alla bozza della specifica v4. |
2 | title Lo userai per dare un titolo al tuo schema. |
3 | description Una piccola descrizione dello schema. |
4 | type La parola chiave type definisce il primo vincolo sui nostri dati JSON: deve essere un oggetto JSON. |
5 | properties Definisce varie chiavi e relativi tipi di valore, valori minimi e massimi da utilizzare nel file JSON. |
6 | required Ciò mantiene un elenco delle proprietà richieste. |
7 | minimum Questo è il vincolo da porre sul valore e rappresenta il valore minimo accettabile. |
8 | exclusiveMinimum Se "exclusiveMinimum" è presente e ha valore booleano true, l'istanza è valida se è strettamente maggiore del valore di "minimum". |
9 | maximum Questo è il vincolo da porre sul valore e rappresenta il valore massimo accettabile. |
10 | exclusiveMaximum Se "exclusiveMaximum" è presente e ha valore booleano true, l'istanza è valida se è strettamente inferiore al valore di "maximum". |
11 | multipleOf Un'istanza numerica è valida contro "multipleOf" se il risultato della divisione dell'istanza per il valore di questa parola chiave è un numero intero. |
12 | maxLength La lunghezza di un'istanza di stringa è definita come il numero massimo dei suoi caratteri. |
13 | minLength La lunghezza di un'istanza di stringa è definita come il numero minimo dei suoi caratteri. |
14 | pattern Un'istanza di stringa è considerata valida se l'espressione regolare corrisponde correttamente all'istanza. |
Puoi controllare un file http://json-schema.orgper l'elenco completo delle parole chiave che possono essere utilizzate nella definizione di uno schema JSON. Lo schema sopra può essere utilizzato per testare la validità del seguente codice JSON:
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
JSON e XML sono formati leggibili dall'uomo e sono indipendenti dalla lingua. Entrambi supportano la creazione, la lettura e la decodifica in situazioni del mondo reale. Possiamo confrontare JSON con XML, in base ai seguenti fattori:
Verbose
XML è più dettagliato di JSON, quindi è più veloce scrivere JSON per i programmatori.
Utilizzo degli array
XML viene utilizzato per descrivere i dati strutturati, che non includono array mentre JSON include array.
Analisi
Il metodo eval di JavaScript analizza JSON. Quando applicato a JSON, eval restituisce l'oggetto descritto.
Esempio
Esempi individuali di XML e JSON -
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
Questo capitolo spiega come codificare e decodificare oggetti JSON utilizzando il linguaggio di programmazione PHP. Cominciamo con la preparazione dell'ambiente per iniziare la nostra programmazione con PHP per JSON.
Ambiente
A partire da PHP 5.2.0, l'estensione JSON è raggruppata e compilata in PHP per impostazione predefinita.
Funzioni JSON
Funzione | Biblioteche |
---|---|
json_encode | Restituisce la rappresentazione JSON di un valore. |
json_decode | Decodifica una stringa JSON. |
json_last_error | Restituisce l'ultimo errore occorso. |
Codifica JSON in PHP (json_encode)
La funzione PHP json_encode () viene utilizzata per codificare JSON in PHP. Questa funzione restituisce la rappresentazione JSON di un valore in caso di successo o FALSE in caso di fallimento.
Sintassi
string json_encode ( $value [, $options = 0 ] )
Parametri
value- Il valore da codificare. Questa funzione funziona solo con dati codificati UTF-8.
options - Questo valore opzionale è una maschera di bit composta da JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT.
Esempio
L'esempio seguente mostra come convertire un array in JSON con PHP -
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Durante l'esecuzione, questo produrrà il seguente risultato:
{"a":1,"b":2,"c":3,"d":4,"e":5}
Il seguente esempio mostra come gli oggetti PHP possono essere convertiti in 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);
?>
Durante l'esecuzione, questo produrrà il seguente risultato:
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
Decodifica JSON in PHP (json_decode)
La funzione PHP json_decode () viene utilizzata per decodificare JSON in PHP. Questa funzione restituisce il valore decodificato da json al tipo PHP appropriato.
Sintassi
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
Paramaters
json_string - È una stringa codificata che deve essere dati codificati UTF-8.
assoc - È un parametro di tipo booleano, se impostato su TRUE, gli oggetti restituiti verranno convertiti in array associativi.
depth - È un parametro di tipo intero che specifica la profondità di ricorsione
options - È una maschera di bit di tipo intero di decodifica JSON, JSON_BIGINT_AS_STRING è supportato.
Esempio
Il seguente esempio mostra come PHP può essere utilizzato per decodificare oggetti JSON:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
Durante l'esecuzione, produrrà il seguente risultato:
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)
}
Questo capitolo spiega come codificare e decodificare oggetti JSON utilizzando il linguaggio di programmazione Perl. Cominciamo con la preparazione dell'ambiente per iniziare la nostra programmazione con Perl per JSON.
Ambiente
Prima di iniziare a codificare e decodificare JSON utilizzando Perl, è necessario installare il modulo JSON, che può essere ottenuto da CPAN. Dopo aver scaricato JSON-2.53.tar.gz o qualsiasi altra versione più recente, segui i passaggi indicati di seguito:
$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install
Funzioni JSON
Funzione | Biblioteche |
---|---|
encode_json | Converte la struttura dati Perl data in una stringa binaria codificata UTF-8. |
decode_json | Decodifica una stringa JSON. |
to_json | Converte la struttura dati Perl data in una stringa json. |
from_json | Si aspetta una stringa json e prova ad analizzarla, restituendo il riferimento risultante. |
convert_blessed | Usa questa funzione con un valore true in modo che Perl possa utilizzare il metodo TO_JSON sulla classe dell'oggetto per convertire un oggetto in JSON. |
Codifica JSON in Perl (encode_json)
La funzione Perl encode_json () converte la struttura dati Perl data in una stringa binaria codificata UTF-8.
Sintassi
$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);
Esempio
L'esempio seguente mostra gli array in 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";
Durante l'esecuzione, questo produrrà il seguente risultato:
{"e":5,"c":3,"a":1,"b":2,"d":4}
L'esempio seguente mostra come gli oggetti Perl possono essere convertiti in 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";
All'esecuzione, produrrà il seguente risultato:
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
Decodifica JSON in Perl (decode_json)
La funzione Perl decode_json () viene utilizzata per decodificare JSON in Perl. Questa funzione restituisce il valore decodificato da json a un tipo Perl appropriato.
Sintassi
$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)
Esempio
L'esempio seguente mostra come utilizzare Perl per decodificare oggetti JSON. Qui dovrai installare il modulo Data :: Dumper se non lo hai già sulla tua macchina.
#!/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);
All'esecuzione, produrrà il seguente risultato:
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
Questo capitolo spiega come codificare e decodificare oggetti JSON utilizzando il linguaggio di programmazione Python. Cominciamo con la preparazione dell'ambiente per iniziare la nostra programmazione con Python per JSON.
Ambiente
Prima di iniziare con la codifica e la decodifica di JSON utilizzando Python, è necessario installare uno dei moduli JSON disponibili. Per questo tutorial abbiamo scaricato e installato Demjson come segue:
$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install
Funzioni JSON
Funzione | Biblioteche |
---|---|
codificare | Codifica l'oggetto Python in una rappresentazione di stringa JSON. |
decodificare | Decodifica una stringa con codifica JSON in un oggetto Python. |
Codifica JSON in Python (codifica)
La funzione Python encode () codifica l'oggetto Python in una rappresentazione di stringa JSON.
Sintassi
demjson.encode(self, obj, nest_level=0)
Esempio
L'esempio seguente mostra gli array in 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
Durante l'esecuzione, questo produrrà il seguente risultato:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
Decodifica JSON in Python (decodifica)
Python può utilizzare la funzione demjson.decode () per decodificare JSON. Questa funzione restituisce il valore decodificato da json a un tipo Python appropriato.
Sintassi
demjson.decode(self, txt)
Esempio
L'esempio seguente mostra come utilizzare Python per decodificare oggetti JSON.
#!/usr/bin/python
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
All'esecuzione, produrrà il seguente risultato:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
Questo capitolo spiega come codificare e decodificare oggetti JSON utilizzando il linguaggio di programmazione Ruby. Cominciamo con la preparazione dell'ambiente per iniziare la nostra programmazione con Ruby per JSON.
Ambiente
Prima di iniziare con la codifica e la decodifica di JSON utilizzando Ruby, è necessario installare uno dei moduli JSON disponibili per Ruby. Potrebbe essere necessario installare Ruby gem, ma se stai eseguendo l'ultima versione di Ruby, devi avere gem già installato sulla tua macchina, altrimenti seguiamo il seguente singolo passaggio supponendo che tu abbia già gem installato -
$gem install json
Analisi di JSON utilizzando Ruby
L'esempio seguente mostra che le prime 2 chiavi contengono valori di stringa e le ultime 3 chiavi contengono array di stringhe. Manteniamo il seguente contenuto in un file chiamatoinput.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"
]
}
Di seguito è riportato un programma Ruby che verrà utilizzato per analizzare il documento JSON sopra menzionato -
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
json = File.read('input.json')
obj = JSON.parse(json)
pp obj
All'esecuzione, produrrà il seguente risultato:
{
"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"]
}
Questo capitolo spiega come codificare e decodificare oggetti JSON utilizzando il linguaggio di programmazione Java. Cominciamo con la preparazione dell'ambiente per iniziare la nostra programmazione con Java per JSON.
Ambiente
Prima di iniziare con la codifica e la decodifica di JSON utilizzando Java, è necessario installare uno dei moduli JSON disponibili. Per questo tutorial abbiamo scaricato e installato JSON.simple e abbiamo aggiunto il percorso dijson-simple-1.1.1.jar file nella variabile d'ambiente CLASSPATH.
Mappatura tra entità JSON e Java
JSON.simple mappa le entità dal lato sinistro al lato destro durante la decodifica o l'analisi e mappa le entità da destra a sinistra durante la codifica.
JSON | Giava |
---|---|
corda | java.lang.String |
numero | java.lang.Number |
vero | falso | java.lang.Boolean |
nullo | nullo |
Vettore | java.util.List |
oggetto | java.util.Map |
Sulla decodifica, la classe concreta predefinita di java.util.List è org.json.simple.JSONArray e la classe concreta predefinita di java.util.Map è org.json.simple.JSONObject .
Codifica JSON in Java
Di seguito è riportato un semplice esempio per codificare un oggetto JSON utilizzando Java JSONObject che è una sottoclasse di java.util.HashMap. Non viene fornito alcun ordine. Se è necessario un ordine rigoroso degli elementi, utilizzare il metodo JSONValue.toJSONString (map) con un'implementazione della mappa ordinata come 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);
}
}
Compilando ed eseguendo il programma di cui sopra, verrà generato il seguente risultato:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Di seguito è riportato un altro esempio che mostra lo streaming di un oggetto JSON utilizzando 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);
}
}
Durante la compilazione e l'esecuzione del programma di cui sopra, viene generato il seguente risultato:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
Decodifica JSON in Java
Il seguente esempio fa uso di JSONObject e JSONArray dove JSONObject è java.util.Map e JSONArray è java.util.List, quindi è possibile accedervi con le operazioni standard di 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);
}
}
}
Durante la compilazione e l'esecuzione del programma di cui sopra, verrà generato il seguente risultato:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
AJAX è Asynchronous JavaScript e XML, che viene utilizzato sul lato client come un gruppo di tecniche di sviluppo web correlate, al fine di creare applicazioni web asincrone. Secondo il modello AJAX, le applicazioni web possono inviare e recuperare dati da un server in modo asincrono senza interferire con la visualizzazione e il comportamento della pagina esistente.
Molti sviluppatori utilizzano JSON per passare gli aggiornamenti AJAX tra il client e il server. I siti web che aggiornano i risultati sportivi in diretta possono essere considerati un esempio di AJAX. Se questi punteggi devono essere aggiornati sul sito Web, devono essere memorizzati sul server in modo che la pagina Web possa recuperare il punteggio quando necessario. È qui che possiamo utilizzare i dati formattati JSON.
Tutti i dati aggiornati utilizzando AJAX possono essere archiviati utilizzando il formato JSON sul server web. AJAX viene utilizzato in modo che javascript possa recuperare questi file JSON quando necessario, analizzarli ed eseguire una delle seguenti operazioni:
Memorizza i valori analizzati nelle variabili per un'ulteriore elaborazione prima di visualizzarli sulla pagina web.
Assegna direttamente i dati agli elementi DOM nella pagina web, in modo che vengano visualizzati sul sito web.
Esempio
Il codice seguente mostra JSON con AJAX. Salvalo comeajax.htmfile. Qui la funzione di caricamento loadJSON () viene utilizzata in modo asincrono per caricare i dati 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>
Di seguito è riportato il file di input data.json, con dati in formato JSON che verranno caricati in modo asincrono quando si fa clic su Update Detailpulsante. Questo file viene conservato inhttp://www.tutorialspoint.com/json/
{"name": "Brett", "country": "Australia"}
Il codice HTML sopra genererà la seguente schermata, dove puoi controllare AJAX in azione -
Dettagli giocatore di cricket
Nome | Nazione |
---|---|
Sachin
|
India
|
Quando fai clic sul file Update Detailpulsante, dovresti ottenere un risultato come segue. Puoi provare JSON con AJAX da solo, a condizione che il tuo browser supporti Javascript.
Dettagli giocatore di cricket
Nome | Nazione |
---|---|
Brett
|
Australia
|