Développons en Java
v 2.40   Copyright (C) 1999-2023 .   
54. StAX (Streaming Api for XML) 56. Gson Imprimer Index Index avec sommaire Télécharger le PDF

 

55. JSON

 

chapitre    5 5

 

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 plates-formes.

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

Ce chapitre contient plusieurs sections :

 

55.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.

 

55.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 :

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

 

55.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 avec une unicité des tags en utilisant des namespaces

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

Utilisation possible d'attributs dans les tags

La verbosité liée à l'utilisation de nom de tags et de leur redondance fréquente dans les tags

Le coût de parsing des documents qui augmente avec la taille des documents

JSON

La vitesse de traitement

La simplicité de mise en oeuvre

Plus compacte

Exploitable directement avec JavaScript

Support d'un nombre limité de type de données

Ne prend pas non plus en charge les métadonnées qui pourraint fournir des informations supplémentaires sur les données

Difficultés de validation : JSON ne dispose pas de mécanisme intégré pour vérifier la structure, le format ou le contenu des données

Faible sécurisation en tant que format de données pour les applications Web. JSON est vulnérable à diverses attaques, telles que le cross-site scripting (XSS), la falsification de requêtes intersites (CSRF)

Pas de support des commentaires

Encoding uniquement en UTF-8


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 :

 


54. StAX (Streaming Api for XML) 56. Gson Imprimer Index Index avec sommaire Télécharger le PDF    
Développons en Java
v 2.40   Copyright (C) 1999-2023 .