Jackson - Associazione dati

L'API di associazione dati viene utilizzata per convertire JSON in e da POJO (Plain Old Java Object) utilizzando la funzione di accesso alle proprietà o utilizzando le annotazioni. È di due tipi.

  • Simple Data Binding - Converte JSON in e da Java Maps, elenchi, stringhe, numeri, booleani e oggetti nulli.

  • Full Data Binding - Converte JSON in e da qualsiasi tipo JAVA.

ObjectMapper legge / scrive JSON per entrambi i tipi di associazioni di dati. Il Data Binding è il modo più conveniente ed è analogo al parer JAXB per XML.

Associazione dati semplice

Il data binding semplice si riferisce alla mappatura di JSON ai tipi di dati JAVA Core. La tabella seguente illustra la relazione tra i tipi JSON e i tipi Java.

Sr. No. Tipo JSON Tipo Java
1 oggetto LinkedHashMap <String, Object>
2 Vettore ArrayList <Object>
3 corda Corda
4 numero completo Integer, Long o BigInteger
5 numero frazionario Double / BigDecimal
6 vero | falso Booleano
7 nullo nullo

Vediamo il semplice data binding in azione. Qui mapperemo i tipi di base JAVA direttamente in JSON e viceversa.

Crea un file di classe java denominato JacksonTester in C:\>Jackson_WORKSPACE.

File: 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

Compila le classi usando javac compilatore come segue:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Ora esegui il jacksonTester per vedere il risultato:

C:\Jackson_WORKSPACE>java JacksonTester

Verifica l'output

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

Associazione dati completa

Associazione dei dati con i generici