Jackson - Veri Bağlama
Veri Bağlama API'si, özellik erişimcisini veya ek açıklamaları kullanarak JSON'u POJO'ya (Düz Eski Java Nesnesi) dönüştürmek için kullanılır. İki tiptedir.
Simple Data Binding - JSON'u Java Haritaları, Listeler, Dizeler, Sayılar, Booleanlar ve boş nesnelere ve bunlardan dönüştürür.
Full Data Binding - JSON'u herhangi bir JAVA türüne ve türünden dönüştürür.
ObjectMapper, her iki veri bağlama türü için JSON okur / yazar. Veri Bağlama en uygun yoldur ve XML için JAXB ayrıştırıcısına benzer.
Basit Veri Bağlama
Basit veri bağlama, JSON'un JAVA Core veri türlerine eşlenmesini ifade eder. Aşağıdaki tablo JSON türleri ile Java Türleri arasındaki ilişkiyi göstermektedir.
Sr. No. | JSON Türü | Java Türü |
---|---|---|
1 | nesne | LinkedHashMap <Dize, Nesne> |
2 | dizi | ArrayList <Nesne> |
3 | dizi | Dize |
4 | tam sayı | Tamsayı, Uzun veya BigInteger |
5 | kesirli sayı | Çift / Büyük Ondalık |
6 | doğru | yanlış | Boole |
7 | boş | boş |
Basit veri bağlamanın nasıl çalıştığını görelim. Burada JAVA temel türlerini doğrudan JSON ile eşleyeceğiz ve bunun tersini de yapacağız.
JacksonTester adlı bir java sınıf dosyası oluşturun. C:\>Jackson_WORKSPACE.
Dosya: 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
Kullanarak sınıfları derleyin javac aşağıdaki gibi derleyici:
C:\Jackson_WORKSPACE>javac JacksonTester.java
Şimdi sonucu görmek için jacksonTester'ı çalıştırın:
C:\Jackson_WORKSPACE>java JacksonTester
Çıkışı Doğrulayın
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]
Tam Veri Bağlama
Generics ile Veri Bağlama