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