Jackson - Liaison de données

L'API de liaison de données est utilisée pour convertir JSON vers et depuis POJO (Plain Old Java Object) à l'aide d'un accesseur de propriété ou à l'aide d'annotations. Il est de deux types.

  • Simple Data Binding - Convertit JSON vers et depuis Java Maps, Lists, Strings, Numbers, Booleans et objets null.

  • Full Data Binding - Convertit JSON vers et depuis n'importe quel type JAVA.

ObjectMapper lit / écrit JSON pour les deux types de liaisons de données. La liaison de données est le moyen le plus pratique et est analogue au parer JAXB pour XML.

Liaison de données simple

La liaison de données simple fait référence au mappage de JSON aux types de données JAVA Core. Le tableau suivant illustre la relation entre les types JSON et les types Java.

Sr. No. Type JSON Type Java
1 objet LinkedHashMap <Chaîne, Objet>
2 tableau ArrayList <Objet>
3 chaîne Chaîne
4 numéro complet Integer, Long ou BigInteger
5 nombre fractionnaire Double / BigDecimal
6 vrai | faux Booléen
sept nul nul

Voyons la liaison de données simple en action. Ici, nous allons mapper les types de base JAVA directement vers JSON et vice versa.

Créez un fichier de classe Java nommé JacksonTester dans C:\>Jackson_WORKSPACE.

Fichier: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){
      JacksonTester tester = new JacksonTester();
         try {
            ObjectMapper mapper = new ObjectMapper();

            Map<String,Object> studentDataMap = new HashMap<String,Object>(); 
            int[] marks = {1,2,3};

            Student student = new Student();
            student.setAge(10);
            student.setName("Mahesh");
            // JAVA Object
            studentDataMap.put("student", student);
            // JAVA String
            studentDataMap.put("name", "Mahesh Kumar");   		
            // JAVA Boolean
            studentDataMap.put("verified", Boolean.FALSE);
            // Array
            studentDataMap.put("marks", marks);

            mapper.writeValue(new File("student.json"), studentDataMap);
            //result student.json
			//{ 
            //   "student":{"name":"Mahesh","age":10},
            //   "marks":[1,2,3],
            //   "verified":false,
            //   "name":"Mahesh Kumar"
            //}
            studentDataMap = mapper.readValue(new File("student.json"), Map.class);

            System.out.println(studentDataMap.get("student"));
            System.out.println(studentDataMap.get("name"));
            System.out.println(studentDataMap.get("verified"));
            System.out.println(studentDataMap.get("marks"));
      } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
            e.printStackTrace();
      }
   }
}

class Student {
   private String name;
   private int age;
   public Student(){}
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public String toString(){
      return "Student [ name: "+name+", age: "+ age+ " ]";
   }	
}

Verify the result

Compilez les classes en utilisant javac compilateur comme suit:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Exécutez maintenant le jacksonTester pour voir le résultat:

C:\Jackson_WORKSPACE>java JacksonTester

Vérifiez la sortie

{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]

Liaison complète des données

Liaison de données avec des génériques