Java API for JSON Processing – JSON nesneleri oluşturmak
Java Api for JSON Processing (JSON-P) , Java EE 7 ile birlikte gelecek olan ve halihazırda geliştirimi sürdürülen 353 numaralı (JSR-353) Java standardıdır. Kısaltma olarak JSON-P denmiş ama bu kısaltma JSON Padding ile karıştırılabilir olduğu için pekte uygun görünmüyor. Bu sebeple ilk bakışta kafa karışıklığına neden olabilir, ama ben yinede bu yazıda JSON-P kısaltmasını tercih edeceğiz.
RESTful web servislerinin indirgenemez yükselişi, JCP’nin bu sürece daha fazla meyil vermesini sağladı ve Java EE 7 içinde, JSON işlemek için bir standart oluşturulması sürecine girildi. XML teknolojileriyle uğraşanlar, XML işleme ve yönetme adına kullanılan Stax ve DOM teknolojilerine aşinadırlar. Java SE içinde XML veri değişim formati için, Stax ve DOM üzerine zaten genel kütüphaneler uzunca bir zamandır yer almakta. Şimdi ise, JSON-P ile birlikte XML için kullanılan Stax ve DOM yaklaşımları, benzer bir şekilde JSON için de getirilmiş olacak.
Yalnız JSON-P içinde Stax ve DOM temelinde kütüphaneler bulunurken, JAXB’a benzer şekilde Nesne<>JSON dönüşümünü üstelenecek Api’ler bulunmuyor. Halihazırda Json Binding işlemleri için Java ekosisteminde bulunan Jackson, Jettison gibi yazılımlar kullanılıyor. JAX-RS içinde örneğin bu işlemler, nesnenin önce XML biçimine dönüştürülmesi, ardından dönüştürülen XML verisinin JSON biçimine dönüştürülmesiyle mesele çözülüy or.
JSON-P projesine http://json-processing-spec.java.net/ adresinden erişebileceğiniz gibi, kütüphanelerin bulunduğu bağımlılığı aşağıdaki Maven dependency bileşeni üzerinden kullanabilirsiniz.
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.0-b04</version> </dependency>
Şimdi sizlerle JSON-P ile nasıl JSON nesneleri oluşturulabileceğinizin örneklerini vermek istiyorum.
Basit bir JSON nesnesi { [ key ]:[ value ] , .. } formatında veriler kabul ederken, Basit bir JSON dizisi [ val1,val2, .. , val3 ] biçiminde veriler kabul etmektedir.
Örnek 1: Basit bir JSON nesnesi
JSON Biçimi
{ "ad": "Fikret", "soyad": "Savaş", "yas": 25 }
JsonObject Karşılığı
JsonObject jsonObject1 = Json.createObjectBuilder() .add("ad", "Fikret") .add("soyad", "Savaş") .add("yas", 25) .build();
Örnek 2: Json nesnesi barındıran kompleks Json dizisi
JSON-P’ de bir JsonArray nesnesi, String, int, double, boolean, BigInteger, BigDecimal gibi türlerden bileşenler kabul edebilir. Bunlara ek olarak da, JsonValue arayüzü türünden nesneler de kabul eder. (Örn: JsonObject, JsonArray gibi.)
JSON Biçimi
[ "A", 5, 6.3, false, 30, { "ad": "Fikret", "soyad": "Savaş", "yas": 25 } ]
JsonArray Karşılığı
JsonArray jsonArray1= Json.createArrayBuilder() .add("A") // String .add(5) // int .add(6.3) // double .add(false) // boolean .add(new BigInteger("30")) // Big(Integer) | (Decimal) .add(jsonObject1) // JsonValue .build();
Örnek 3: Json dizisi barındıran bir Json nesnesi
JSON Biçimi
{ "ad": [ "Emin", "Şahin" ], "soyad": "Demir" }
JsonObject Karşılığı
JsonArray jsonArray2=Json.createArrayBuilder() .add("Emin").add("Şahin").build(); JsonObject jsonObject2 = Json.createObjectBuilder() .add("ad", jsonArray2) .add("soyad", "Demir") .build();
Örnek 4: Kompleks bir Json nesnesi
JSON Biçimi
{ "ad": "Ersin", "soyad": "Çetinkaya", "yas": 25, "adres": { "sehir": "Bursa", "ulke": "Türkiye", "Pk": "33444" }, "telefonlar": [ "234234242", "345345354" ] }
JsonObject Karşılığı
JsonObject jsonObject3 = Json.createObjectBuilder() .add("ad", "Ersin") .add("soyad", "Çetinkaya") .add("yas", 25) .add("adres", Json.createObjectBuilder() .add("sehir", "Bursa") .add("ulke", "Türkiye") .add("Pk", "33444")) .add("telefonlar", Json.createArrayBuilder() .add("234234242") .add("345345354")) .build();
Örneklere buradan erişebilirsiniz.
Tekrar görüşmek dileğiyle.
3 Comments
link hatalı
Çalışıyor gibi duruyor. https://github.com/rahmanusta/JSON-P