JSON avec Java

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 de 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]