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