Jackson - wiązanie danych
Interfejs API wiązania danych służy do konwertowania JSON do iz POJO (zwykły stary obiekt Java) za pomocą metody dostępu do właściwości lub adnotacji. Jest dwojakiego rodzaju.
Simple Data Binding - Konwertuje JSON do iz Java Maps, list, ciągów znaków, liczb, wartości logicznych i obiektów zerowych.
Full Data Binding - Konwertuje JSON na iz dowolnego typu JAVA.
ObjectMapper odczytuje / zapisuje JSON dla obu typów powiązań danych. Data Binding jest najwygodniejszym sposobem i jest analogiem do JAXB parer dla XML.
Proste wiązanie danych
Proste powiązanie danych odnosi się do mapowania typów danych JSON na JAVA Core. Poniższa tabela ilustruje związek między typami JSON a typami Java.
Sr. No. | Typ JSON | Typ Java |
---|---|---|
1 | obiekt | LinkedHashMap <String, Object> |
2 | szyk | ArrayList <Object> |
3 | strunowy | Strunowy |
4 | pełny numer | Integer, Long lub BigInteger |
5 | liczba ułamkowa | Double / BigDecimal |
6 | prawda | fałszywy | Boolean |
7 | zero | zero |
Zobaczmy, jak działa proste wiązanie danych. Tutaj zmapujemy podstawowe typy JAVA bezpośrednio na JSON i odwrotnie.
Utwórz plik klasy java o nazwie JacksonTester w programie C:\>Jackson_WORKSPACE.
Plik: 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
Skompiluj klasy przy użyciu javac kompilator w następujący sposób:
C:\Jackson_WORKSPACE>javac JacksonTester.java
Teraz uruchom test jacksonTester, aby zobaczyć wynik:
C:\Jackson_WORKSPACE>java JacksonTester
Sprawdź dane wyjściowe
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]
Pełne wiązanie danych
Powiązanie danych z rodzajami