47. StAX (Streaming Api for XML) 49. Gson Imprimer Sommaire Consulter avec table des matières
Développons en Java   v 2.10  
Copyright (C) 1999-2016 .  

 

48. JSON

 

chapitre 4 8

 

Niveau : niveau 2 Elémentaire 

 

JSON est un format de données, basé sur du texte. JSON est l'acronyme de JavaScript Object Notation car c'est un dérivé de la représentation littérale d'un objet en JavaScript définit par l'ECMAScript Programming Language Standard.

Le format JSON est spécifié dans la RFC 4627. Il permet de sérialiser une structure de données au format texte. JSON est largement utilisé pour stocker des données ou échanger des données notamment sur Internet mais aussi entre les couches IHM et applicative/service d'une application.

JSON connait un fort engouement car il possède quelques points forts :

La syntaxe de JSON est très simple ce qui explique une partie de son succès. Elle ne définit que deux types de structure : un objet qui est un ensemble de paires clé/valeur et un tableau.

JSON définit 6 types de données : string, number, object, array, true, false et null.

Exemple :
{ "nom": "Dupont",
  "prenom": "Jean",
  "ville": "Paris",
  "pays": "France",
  "telephone": [ { "mobile": "0612345678" },
  { "fax": "0312345678" } ]
}

JSON est couramment utilisé pour échanger (sérialiser/désérialiser) des données entre applications ou modules d'une application en utilisant le réseau. Ces applications peuvent être développées avec différents langages et exécutées sur différentes plate-formes.

JSON est utilisable avec de nombreux langages notamment Java grâce à plusieurs API open source.

Ce chapitre contient plusieurs sections :

 

48.1. La syntaxe de JSON

JSON ne définit que deux structures de données :

JSON supporte plusieurs types de données :

Les valeurs d'un objet ou d'un tableau peuvent être d'un de ces types.

Dans une chaîne de caractères, le caractère d'échappement est le caractère antislash qui permet notamment de représenter dans la chaîne de caractères :

Exemple :
{ "prenom":"Jean-Michel" ,
"ville":"Paris" }

Le séparateur d'un nombre flottant est le caractère point.

JSON utilise deux types de structures :

Exemple :
{ "prenom":"Jean-Michel" ,
"ville":"Paris" }

Exemple :
[{ "prenom":"prenom1"
, "nom":"nom1" },
{
"prenom":"prenom2" , "nom":"nom2" },
{
"prenom":"prenom3" , "nom":"nom3" }]

Une valeur peut être d'un des types supportés par JSON : ces structures peuvent donc être imbriquées.

Exemple :
{ "groupe":
[{
"prenom":"prenom1" , "nom":"nom1" },
{
"prenom":"prenom2" , "nom":"nom2" },
{
"prenom":"prenom3" , "nom":"nom3" }]
}

Le tableau ci-dessous résume la syntaxe de JSON.

objet

{}
{ membres }

membres

paire
paire , membres

paire

string : valeur

tableau

[]
[ elements ]

elements

value
value , elements

value

string
nombre
objet
tableau
true
false
null

string

""
" chars "

chars

char
char chars

 

char

caractère Unicode sauf " et \
\"
\\
\/
\b
\f
\n
\r
\t
\u nnnn

nombre

int
int frac
int exp
int frac exp

int

digit
digit1-9 digits
- digit
- digit1-9 digits

frac

. digits

exp

e digits

digits

digit
digit digits

e

e
e+
e-
E
E+
E-


Les contenus binaires peuvent être intégrés dans une représentation JSON en les encodant en Base 64.

 

48.2. L'utilisation de JSON

JSON est essentiellement utilisé pour échanger ou stocker des données structurées.

Le type MIME d'un document JSON est application/json

JSON est fréquemment utilisé dans les requêtes AJAX car son exploitation par JavaScript est plus simple et plus rapide que XML.

JSON est indépendant de tout langage : de nombreuses bibliothèques existent pour de nombreux langages dont Java.

Il existe plusieurs API pour manipuler des documents au format JSON en Java :

org.json org.json.me Jackson JSON Processor
Json-lib Boon Stringtree
SOJO Jettison json-taglib
XStream Flexjson JON tools
Argo jsonij fastjson
mjson jjson json-simple
json-io JsonMarshaller google-gson
Json-smart FOSS Nova JSON Corn CONVERTER

 

48.3. JSON ou XML

JSON possède plusieurs points communs avec XML :

Contrairement à XML, JSON ne propose pas de standard pour décrire la structure des données, ce qui pourrait permettre de valider un document JSON.

Moins verbeux que XML, l'utilisation de JSON tent à se répendre notamment pour une utilisation combinée avec REST pour proposer des API facile à utiliser.

JSON est plus compact et facile à parser qu'un document XML équivalent. Un document JSON est cependant légèrement moins lisible.

 

Avantages

Inconvénient

XML

XML est extensible

XML permet de définir une structure particulière pour chaque document

Possibilité de définir une description du document (DTD ou schéma) permettant de le valider

 

JSON

La vitesse de traitement.

La simplicité de mise en oeuvre.

Plus compacte

Exploitable directement avec JavaScript

 

Remarque : XML et JSON ne conviennent pas pour stocker directement des données binaires de taille importante.

L'exemple ci-dessous est la définition d'un menu : il s'agit d'un objet composé de membres qui sont un attribut et un tableau lequel contient d'autres objets, les éléments du menu.

Exemple :
{ 
  "menu": "Fichier", 
  "commandes": [ 
      {
          "title": "Nouveau", 
          "action":"NouveauDoc"
      }, 
      {
          "title": "Ouvrir", 
          "action": "OuvrirDoc"
      }, 
      {
          "title": "Fermer",
          "action": "FermerDoc"
      }
   ] 
} 

L'équivalent XML est le document ci-dessous :

Exemple :
<?xml version="1.0" ?>
<root>
  <menu>Fichier</menu>
  <commands>
     <item>
         <title>Nouveau</value>
         <action>NouveauDoc</action>
     </item>
     <item>
         <title>Ouvrir</value>
         <action>OuvrirDoc</action>
     </item>
     <item>
         <title>Fermer</value>
         <action>FermerDoc</action>
     </item>
  </commands>
</root>

Comme pour XML, il existe deux grands modèles de programmation pour générer ou parser des données aux formats Json :

 


  47. StAX (Streaming Api for XML) 49. Gson Imprimer Sommaire Consulter avec table des matières Développons en Java   v 2.10  
Copyright (C) 1999-2016 .