Java’da Json / Pojo Object İşlemleri (Jackson Kütüphanesi)

Merhaba gencolar,

Hani okuduysanız geçenlerde web’in hayatımızın vazgeçilmezi oldugunu ve tüm projelerimizde web’e bulaştığımızı söylemiştik. Bu abi de bizim rest alışverişlerimizden sonra obje çevirimleri için kullandığımız kütüphane.

Üç değişik kullanım methodu var: Streaming API, Tree, POJO (Mapping). Bu ilk ikisine hiç girmeden direk üçüncü yani POJO/Json Mapping kullanımından yürüyeceğiz. Neden mi? çünkü böyle daha kolay. Ama yine de bir göz atın kendi kararınızı verin.

Maven repository linki:

http://mvnrepository.com/artifact/com.fasterxml.jackson.core

Tabii eğer jersey ile bir kullanım mevcut ise:

http://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson/2.22.2

Şöyle bir json objemiz gelsin:

 
 
  1. { name :'sercan', age:29}

 

Ona karşılık şöyle bir pojo objemiz olsun:

 
 
  1. public class Person{
  2.     @JsonProperty("name")
  3.     private String name;
  4.     @JsonProperty("age")
  5.     private int age;
  6.    //..
  7.    //getters & setters
  8. }

 

Not: JsonProperty data donerken/gelirken ki değerleri. Örneğin pojo’daki değişken ismi ile değil de farklı bir şekilde dönmek istiyoruz. O zaman bunları kullanırız. JPA’deki column name gibi aslında.

ve bu şekilde json pojo’ya dönüşür:

 
 
  1. String jsonStr = "{ name:'sercan',age:29}";
  2. ObjectMapper mapper = new ObjectMapper();
  3. Person p = mapper.readValue(jsonStr, Person.class);

 

ve de(cuppala) şu şekilde de pojo json string’e çevrilir:

 
 
  1. Person p = new Person();
  2. p.setName("alican");
  3. p.setAge(12);
  4. ObjectMapper mapper = new ObjectMapper();
  5. String jsonStr = mapper.writeValueAsString(p);

 

Olay bu kadar. Genellikle hele de jersey ile api bağlantıları vs kuruyorsanız jackson kütüphanesi çok işinize yarayacak.

Ayrıca kaynak linkine bir göz atmanızı öneririm:
http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir