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]