JSON - Guide rapide

JSON ou JavaScript Object Notation est un standard ouvert basé sur du texte léger conçu pour l'échange de données lisible par l'homme. Les conventions utilisées par JSON sont connues des programmeurs, notamment C, C ++, Java, Python, Perl, etc.

  • JSON signifie JavaScript Object Notation.

  • Le format a été spécifié par Douglas Crockford.

  • Il a été conçu pour l'échange de données lisibles par l'homme.

  • Il a été étendu à partir du langage de script JavaScript.

  • L'extension du nom de fichier est .json.

  • Le type de média Internet JSON est application/json.

  • L'identificateur de type uniforme est public.json.

Utilisations de JSON

  • Il est utilisé lors de l'écriture d'applications basées sur JavaScript qui incluent des extensions de navigateur et des sites Web.

  • Le format JSON est utilisé pour la sérialisation et la transmission de données structurées via une connexion réseau.

  • Il est principalement utilisé pour transmettre des données entre un serveur et des applications Web.

  • Les services Web et les API utilisent le format JSON pour fournir des données publiques.

  • Il peut être utilisé avec les langages de programmation modernes.

Caractéristiques de JSON

  • JSON est facile à lire et à écrire.
  • C'est un format d'échange basé sur du texte léger.
  • JSON est indépendant du langage.

Exemple simple en JSON

L'exemple suivant montre comment utiliser JSON pour stocker des informations relatives aux livres en fonction de leur sujet et de leur édition.

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

Après avoir compris le programme ci-dessus, nous allons essayer un autre exemple. Sauvegardons le code ci-dessous sousjson.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>

Essayons maintenant d'ouvrir json.htm en utilisant IE ou tout autre navigateur compatible javascript qui produit le résultat suivant -

Vous pouvez vous référer au chapitre Objets JSON pour plus d'informations sur les objets JSON.

Jetons un coup d'œil à la syntaxe de base de JSON. La syntaxe JSON est essentiellement considérée comme un sous-ensemble de la syntaxe JavaScript; il comprend les éléments suivants -

  • Les données sont représentées par paires nom / valeur.

  • Les accolades contiennent des objets et chaque nom est suivi de «:» (deux-points), les paires nom / valeur sont séparées par, (virgule).

  • Les crochets contiennent des tableaux et les valeurs sont séparées par (virgule).

Voici un exemple simple -

{
   "book": [

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

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

   ]
}

JSON prend en charge les deux structures de données suivantes -

  • Collection of name/value pairs - Cette structure de données est prise en charge par différents langages de programmation.

  • Ordered list of values - Il comprend un tableau, une liste, un vecteur ou une séquence, etc.

Le format JSON prend en charge les types de données suivants -

Sr.No. Type et description
1

Number

format à virgule flottante double précision en JavaScript

2

String

Unicode entre guillemets doubles avec échappement de barre oblique inverse

3

Boolean

vrai ou faux

4

Array

une séquence ordonnée de valeurs

5

Value

cela peut être une chaîne, un nombre, vrai ou faux, nul, etc.

6

Object

une collection non ordonnée de paires clé: valeur

sept

Whitespace

peut être utilisé entre n'importe quelle paire de jetons

8

null

vide

Nombre

  • C'est un format à virgule flottante double précision en JavaScript et cela dépend de l'implémentation.

  • Les formats octal et hexadécimal ne sont pas utilisés.

  • Aucun NaN ou Infinity n'est utilisé dans Number.

Le tableau suivant montre les types de nombres -

Sr.No. Type et description
1

Integer

Chiffres 1 à 9, 0 et positifs ou négatifs

2

Fraction

Fractions comme .3, .9

3

Exponent

Exposant comme e, e +, e-, E, E +, E-

Syntaxe

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

Exemple

Exemple montrant le type de données numérique, la valeur ne doit pas être citée -

var obj = {marks: 97}

Chaîne

  • Il s'agit d'une séquence de zéro ou plusieurs caractères Unicode entre guillemets doubles avec échappement de barre oblique inverse.

  • Le caractère est une chaîne de caractères unique, c'est-à-dire une chaîne de longueur 1.

Le tableau montre divers caractères spéciaux que vous pouvez utiliser dans les chaînes d'un document JSON -

Sr.No. Type et description
1

"

citation double

2

\

barre oblique inverse

3

/

barre oblique

4

b

retour arrière

5

f

flux de formulaire

6

n

nouvelle ligne

sept

r

retour chariot

8

t

onglet horizontal

9

u

quatre chiffres hexadécimaux

Syntaxe

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

Exemple

Exemple montrant un type de données chaîne -

var obj = {name: 'Amit'}

Booléen

Il comprend des valeurs vraies ou fausses.

Syntaxe

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

Exemple

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

Tableau

  • C'est une collection ordonnée de valeurs.

  • Ceux-ci sont entre crochets, ce qui signifie que le tableau commence par. [. et se termine par.] ..

  • Les valeurs sont séparées par (virgule).

  • L'indexation des tableaux peut être démarrée à 0 ou 1.

  • Les tableaux doivent être utilisés lorsque les noms de clé sont des entiers séquentiels.

Syntaxe

[ value, .......]

Exemple

Exemple montrant un tableau contenant plusieurs objets -

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

Objet

  • Il s'agit d'un ensemble non ordonné de paires nom / valeur.

  • Les objets sont entourés d'accolades, c'est-à-dire qu'il commence par «{» et se termine par «}».

  • Chaque nom est suivi de «:» (deux-points) et les paires clé / valeur sont séparées par (virgule).

  • Les clés doivent être des chaînes et doivent être différentes les unes des autres.

  • Les objets doivent être utilisés lorsque les noms de clé sont des chaînes arbitraires.

Syntaxe

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

Exemple

Exemple montrant un objet -

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

Espace blanc

Il peut être inséré entre n'importe quelle paire de jetons. Il peut être ajouté pour rendre un code plus lisible. L'exemple montre une déclaration avec et sans espace -

Syntaxe

{string:" ",....}

Exemple

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

nul

Cela signifie un type vide.

Syntaxe

null

Exemple

var i = null;

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

Valeur JSON

Il comprend -

  • nombre (entier ou virgule flottante)
  • string
  • boolean
  • array
  • object
  • null

Syntaxe

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

Exemple

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

Création d'objets simples

Les objets JSON peuvent être créés avec JavaScript. Voyons les différentes façons de créer des objets JSON à l'aide de JavaScript -

  • Création d'un objet vide -
var JSONObj = {};
  • Création d'un nouvel objet -
var JSONObj = new Object();
  • Création d'un objet avec attribut bookname avec valeur en chaîne, attribut priceavec valeur numérique. L'attribut est accessible en utilisant '.' Opérateur -

var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

Ceci est un exemple qui montre la création d'un objet en javascript en utilisant JSON, enregistrez le code ci-dessous sous 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>

Essayons maintenant d'ouvrir utilisant IE ou tout autre navigateur compatible JavaScript. Il produit le résultat suivant -

Création d'objets de tableau

L'exemple suivant montre la création d'un objet tableau en javascript à l'aide de JSON, enregistrez le code ci-dessous sous 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>

Essayons maintenant d'ouvrir utilisant IE ou tout autre navigateur compatible JavaScript. Il produit le résultat suivant -

Le schéma JSON est une spécification du format basé sur JSON pour définir la structure des données JSON. Il a été rédigé sous le projet IETF qui a expiré en 2011. Schéma JSON -

  • Décrit votre format de données existant.
  • Documentation claire, lisible par l'homme et la machine.
  • Validation structurelle complète, utile pour les tests automatisés.
  • Validation structurelle complète, validation des données soumises par le client.

Bibliothèques de validation de schéma JSON

Il existe actuellement plusieurs validateurs disponibles pour différents langages de programmation. Actuellement, le validateur de schéma JSON le plus complet et conforme disponible est JSV.

Langues Bibliothèques
C WJElement (LGPLv3)
Java validateur de schéma json (LGPLv3)
.NET Json.NET (MIT)
ActionScript 3 Frigga (MIT)
Haskell aeson-schema (MIT)
Python Jsonschema
Rubis autoparse (ASL 2.0); ruby-jsonschema (MIT)
PHP php-json-schema (MIT). json-schema (Berkeley)
JavaScript Ordonné (BSD); JSV; json-schema; Matic (MIT); Dojo; Persévérer (BSD ou AFL 2.0 modifié); schema.js.

Exemple de schéma JSON

Vous trouverez ci-dessous un schéma JSON de base, qui couvre une description classique du catalogue de produits -

{
   "$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"]
}

Vérifions divers mots-clés importants pouvant être utilisés dans ce schéma -

Sr.No. Mot-clé et description
1

$schema

Le mot clé $ schema indique que ce schéma est écrit conformément à la spécification provisoire v4.

2

title

Vous l'utiliserez pour donner un titre à votre schéma.

3

description

Une petite description du schéma.

4

type

Le mot-clé type définit la première contrainte sur nos données JSON: il doit s'agir d'un objet JSON.

5

properties

Définit diverses clés et leurs types de valeur, les valeurs minimales et maximales à utiliser dans le fichier JSON.

6

required

Cela conserve une liste des propriétés requises.

sept

minimum

C'est la contrainte à mettre sur la valeur et représente la valeur minimale acceptable.

8

exclusiveMinimum

Si "exclusiveMinimum" est présent et a la valeur booléenne true, l'instance est valide si elle est strictement supérieure à la valeur de "minimum".

9

maximum

C'est la contrainte à mettre sur la valeur et représente la valeur maximale acceptable.

dix

exclusiveMaximum

Si "exclusiveMaximum" est présent et a la valeur booléenne true, l'instance est valide si elle est strictement inférieure à la valeur de "maximum".

11

multipleOf

Une instance numérique est valide pour "multipleOf" si le résultat de la division de l'instance par la valeur de ce mot clé est un entier.

12

maxLength

La longueur d'une instance de chaîne est définie comme le nombre maximum de ses caractères.

13

minLength

La longueur d'une instance de chaîne est définie comme le nombre minimum de ses caractères.

14

pattern

Une instance de chaîne est considérée comme valide si l'expression régulière correspond à l'instance avec succès.

Vous pouvez vérifier un http://json-schema.orgpour obtenir la liste complète des mots-clés pouvant être utilisés pour définir un schéma JSON. Le schéma ci-dessus peut être utilisé pour tester la validité du code JSON suivant -

[
   {
      "id": 2,
      "name": "An ice sculpture",
      "price": 12.50,
   },
	
   {
      "id": 3,
      "name": "A blue mouse",
      "price": 25.50,
   }
]

JSON et XML sont des formats lisibles par l'homme et sont indépendants de la langue. Ils ont tous deux un support pour la création, la lecture et le décodage dans des situations du monde réel. Nous pouvons comparer JSON avec XML, en fonction des facteurs suivants -

Verbeux

XML est plus détaillé que JSON, il est donc plus rapide d'écrire du JSON pour les programmeurs.

Utilisation des tableaux

XML est utilisé pour décrire les données structurées, qui n'incluent pas de tableaux alors que JSON inclut des tableaux.

Analyse

La méthode eval de JavaScript analyse JSON. Lorsqu'il est appliqué à JSON, eval renvoie l'objet décrit.

Exemple

Exemples individuels de XML et JSON -

JSON

{
   "company": Volkswagen,
   "name": "Vento",
   "price": 800000
}

XML

<car>
   <company>Volkswagen</company>
   <name>Vento</name>
   <price>800000</price>
</car>

Ce chapitre explique comment encoder et décoder des objets JSON à l'aide du langage de programmation PHP. Commençons par préparer l'environnement pour démarrer notre programmation avec PHP pour JSON.

Environnement

Depuis PHP 5.2.0, l'extension JSON est intégrée et compilée en PHP par défaut.

Fonctions JSON

Fonction Bibliothèques
json_encode Renvoie la représentation JSON d'une valeur.
json_decode Décode une chaîne JSON.
json_last_error Renvoie la dernière erreur survenue.

Encodage de JSON en PHP (json_encode)

La fonction PHP json_encode () est utilisée pour encoder JSON en PHP. Cette fonction renvoie la représentation JSON d'une valeur en cas de succès ou FALSE en cas d'échec.

Syntaxe

string json_encode ( $value [, $options = 0 ] )

Paramètres

  • value- La valeur en cours de codage. Cette fonction fonctionne uniquement avec les données encodées UTF-8.

  • options - Cette valeur facultative est un masque de bits composé 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.

Exemple

L'exemple suivant montre comment convertir un tableau en JSON avec PHP -

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

Pendant l'exécution, cela produira le résultat suivant -

{"a":1,"b":2,"c":3,"d":4,"e":5}

L'exemple suivant montre comment les objets PHP peuvent être convertis 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);
?>

Pendant l'exécution, cela produira le résultat suivant -

{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}

Décodage de JSON en PHP (json_decode)

La fonction PHP json_decode () est utilisée pour décoder JSON en PHP. Cette fonction renvoie la valeur décodée de json au type PHP approprié.

Syntaxe

mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

Paramètres

  • json_string - Il s'agit d'une chaîne codée qui doit être des données codées UTF-8.

  • assoc - C'est un paramètre de type booléen, lorsqu'il est défini sur TRUE, les objets renvoyés seront convertis en tableaux associatifs.

  • depth - C'est un paramètre de type entier qui spécifie la profondeur de récursivité

  • options - Il s'agit d'un masque binaire de type entier de décodage JSON, JSON_BIGINT_AS_STRING est pris en charge.

Exemple

L'exemple suivant montre comment PHP peut être utilisé pour décoder des objets JSON -

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

Lors de l'exécution, il produira le résultat suivant -

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)
}

Ce chapitre explique comment encoder et décoder des objets JSON à l'aide du langage de programmation Perl. Commençons par préparer l'environnement pour démarrer notre programmation avec Perl pour JSON.

Environnement

Avant de commencer à encoder et décoder JSON à l'aide de Perl, vous devez installer le module JSON, qui peut être obtenu auprès de CPAN. Une fois que vous avez téléchargé JSON-2.53.tar.gz ou toute autre version la plus récente, suivez les étapes mentionnées ci-dessous -

$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install

Fonctions JSON

Fonction Bibliothèques
encode_json Convertit la structure de données Perl donnée en une chaîne binaire encodée en UTF-8.
decode_json Décode une chaîne JSON.
to_json Convertit la structure de données Perl donnée en une chaîne json.
from_json Attend une chaîne json et essaie de l'analyser, renvoyant la référence résultante.
convert_blessed Utilisez cette fonction avec une valeur vraie pour que Perl puisse utiliser la méthode TO_JSON sur la classe de l'objet pour convertir un objet en JSON.

Encodage de JSON en Perl (encode_json)

La fonction Perl encode_json () convertit la structure de données Perl donnée en une chaîne binaire encodée en UTF-8.

Syntaxe

$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);

Exemple

L'exemple suivant montre des tableaux sous JSON avec 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";

Pendant l'exécution, cela produira le résultat suivant -

{"e":5,"c":3,"a":1,"b":2,"d":4}

L'exemple suivant montre comment les objets Perl peuvent être convertis 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";

Lors de l'exécution, il produira le résultat suivant -

{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}

Décoder JSON en Perl (decode_json)

La fonction Perl decode_json () est utilisée pour décoder JSON en Perl. Cette fonction renvoie la valeur décodée de json vers un type Perl approprié.

Syntaxe

$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)

Exemple

L'exemple suivant montre comment Perl peut être utilisé pour décoder des objets JSON. Ici, vous devrez installer le module Data :: Dumper si vous ne l'avez pas déjà sur votre machine.

#!/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);

Lors de l'exécution, il produira le résultat suivant -

$VAR1 = {
   'e' => 5,
   'c' => 3,
   'a' => 1,
   'b' => 2,
   'd' => 4
};

Ce chapitre explique comment encoder et décoder des objets JSON à l'aide du langage de programmation Python. Commençons par préparer l'environnement pour démarrer notre programmation avec Python pour JSON.

Environnement

Avant de commencer à encoder et décoder JSON à l'aide de Python, vous devez installer l'un des modules JSON disponibles. Pour ce tutoriel, nous avons téléchargé et installé Demjson comme suit -

$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install

Fonctions JSON

Fonction Bibliothèques
encoder Encode l'objet Python en une représentation sous forme de chaîne JSON.
décoder Décode une chaîne codée JSON en un objet Python.

Encodage de JSON en Python (encoder)

La fonction Python encode () encode l'objet Python en une représentation sous forme de chaîne JSON.

Syntaxe

demjson.encode(self, obj, nest_level=0)

Exemple

L'exemple suivant montre des tableaux sous JSON avec Python.

#!/usr/bin/python
import demjson

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = demjson.encode(data)
print json

Pendant l'exécution, cela produira le résultat suivant -

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

Décodage de JSON en Python (décodage)

Python peut utiliser la fonction demjson.decode () pour décoder JSON. Cette fonction renvoie la valeur décodée de json vers un type Python approprié.

Syntaxe

demjson.decode(self, txt)

Exemple

L'exemple suivant montre comment Python peut être utilisé pour décoder des objets JSON.

#!/usr/bin/python
import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)
print  text

Lors de l'exécution, il produira le résultat suivant -

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

Ce chapitre explique comment encoder et décoder des objets JSON à l'aide du langage de programmation Ruby. Commençons par préparer l'environnement pour démarrer notre programmation avec Ruby pour JSON.

Environnement

Avant de commencer à encoder et décoder JSON à l'aide de Ruby, vous devez installer l'un des modules JSON disponibles pour Ruby. Vous devrez peut-être installer Ruby gem, mais si vous utilisez la dernière version de Ruby, vous devez avoir gem déjà installé sur votre machine, sinon suivons l'étape suivante en supposant que vous avez déjà installé gem -

$gem install json

Analyser JSON à l'aide de Ruby

L'exemple suivant montre que les 2 premières clés contiennent des valeurs de chaîne et les 3 dernières clés contiennent des tableaux de chaînes. Gardons le contenu suivant dans un fichier appeléinput.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"
   ]
	
}

Vous trouverez ci-dessous un programme Ruby qui sera utilisé pour analyser le document JSON mentionné ci-dessus -

#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'

json = File.read('input.json')
obj = JSON.parse(json)

pp obj

Lors de l'exécution, il produira le résultat suivant -

{
   "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"]
}

Ce chapitre explique comment encoder et décoder des objets JSON à l'aide du langage de programmation Java. Commençons par préparer l'environnement pour démarrer notre programmation avec Java pour JSON.

Environnement

Avant de commencer à encoder et décoder JSON à l'aide de Java, vous devez installer l'un des modules JSON disponibles. Pour ce tutoriel, nous avons téléchargé et installé JSON.simple et avons ajouté l'emplacement dejson-simple-1.1.1.jar fichier dans la variable d'environnement CLASSPATH.

Mappage entre les entités JSON et Java

JSON.simple mappe les entités du côté gauche vers le côté droit lors du décodage ou de l'analyse, et mappe les entités de la droite vers la gauche lors du codage.

JSON Java
chaîne java.lang.String
nombre java.lang.Number
vrai | faux java.lang.Boolean
nul nul
tableau java.util.List
objet java.util.Map

Lors du décodage, la classe concrète par défaut de java.util.List est org.json.simple.JSONArray et la classe concrète par défaut de java.util.Map est org.json.simple.JSONObject .

Encodage JSON en Java

Voici un exemple simple pour encoder un objet JSON à l'aide de Java JSONObject qui est une sous-classe de java.util.HashMap. Aucune commande n'est fournie. Si vous avez besoin d'un ordre strict des éléments, utilisez la méthode JSONValue.toJSONString (map) avec une implémentation de carte ordonnée telle que 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);
   }
}

Lors de la compilation et de l'exécution du programme ci-dessus, le résultat suivant sera généré -

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

Voici un autre exemple qui montre un objet JSON en streaming à l'aide de 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);
   }
}

Lors de la compilation et de l'exécution du programme ci-dessus, le résultat suivant est généré -

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

Décodage de JSON en Java

L'exemple suivant utilise JSONObject et JSONArray où JSONObject est un java.util.Map et JSONArray est un java.util.List, vous pouvez donc y accéder avec des opérations standard de Map ou 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);
      }
   }
}

Lors de la compilation et de l'exécution du programme ci-dessus, le résultat suivant sera généré -

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}

Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

AJAX est JavaScript asynchrone et XML, qui est utilisé côté client comme un groupe de techniques de développement Web interdépendantes, afin de créer des applications Web asynchrones. Selon le modèle AJAX, les applications Web peuvent envoyer et récupérer des données d'un serveur de manière asynchrone sans interférer avec l'affichage et le comportement de la page existante.

De nombreux développeurs utilisent JSON pour transmettre les mises à jour AJAX entre le client et le serveur. Les sites Web mettant à jour les résultats sportifs en direct peuvent être considérés comme un exemple d'AJAX. Si ces scores doivent être mis à jour sur le site Web, ils doivent être stockés sur le serveur afin que la page Web puisse récupérer le score lorsque cela est nécessaire. C'est ici que nous pouvons utiliser des données au format JSON.

Toutes les données mises à jour à l'aide d'AJAX peuvent être stockées au format JSON sur le serveur Web. AJAX est utilisé pour que javascript puisse récupérer ces fichiers JSON si nécessaire, les analyser et effectuer l'une des opérations suivantes -

  • Stockez les valeurs analysées dans les variables pour un traitement ultérieur avant de les afficher sur la page Web.

  • Il attribue directement les données aux éléments DOM de la page Web, afin qu'ils soient affichés sur le site Web.

Exemple

Le code suivant montre JSON avec AJAX. Enregistrez-le sousajax.htmfichier. Ici, la fonction de chargement loadJSON () est utilisée de manière asynchrone pour télécharger des données 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>

Ci-dessous est le fichier d'entrée data.json, ayant des données au format JSON qui seront téléchargées de manière asynchrone lorsque nous cliquons sur le Update Detailbouton. Ce fichier est conservé danshttp://www.tutorialspoint.com/json/

{"name": "Brett", "country": "Australia"}

Le code HTML ci-dessus générera l'écran suivant, où vous pourrez vérifier AJAX en action -

Détails du joueur de cricket

Nom Pays
Sachin
Inde

Lorsque vous cliquez sur le Update Detailbouton, vous devriez obtenir un résultat comme suit. Vous pouvez essayer vous-même JSON avec AJAX , à condition que votre navigateur prenne en charge Javascript.

Détails du joueur de cricket

Nom Pays
Brett
Australie