• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEduKodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Java API for JSON Processing – JSON nesneleri okumak ve yazmak

  • Posted by Rahman Usta
  • Categories backend, Genel, Tutorial, Uncategorized, Yazılar, Yazılım
  • Date 25 Mart 2013

Merhabalar;json-p-2

Bir önceki yazıda basit JSON dizi ve nesnelerinin nasıl oluşturulabileceğinden bahsetmiştik. Şimdi ise, var olan bu nesnelerin bir I/O ortamına (bu dosya sistemi veya ağ ortamı olabilir) nasıl kazınacağı, ve hali hazırda bir I/O ortamında bulunan JSON veri kümesinin, nasıl JSON-P nesnelerine dönüştürüleceğinden bahsetmek istiyorum.

Okuma ve yazma işlemleri için JSON-P içinde JsonReader ve JsonWriter isimli arayüzler kullanılıyor.

Örnek 1: JSON nesnesinin kazınması

JsonWriter türünden bir nesne Json sınıfının createWriter(..) static metoduyla oluşturulur. Metod parametre olarak OutputStream (Byte ırmağı) veya Writer (Karakter ırmağı) ailesinden nesneler kabul edebilir.

// Basit bir dizi
JsonArray jsonArray = Json.createArrayBuilder()
	.add("Emin").add("Şahin").build();

// Json dizisi içeren, basit bir nesne
JsonObject jsonObject = Json.createObjectBuilder()
	.add("ad", jsonArray)
	.add("soyad", "Demir")
.build();

try (PrintWriter pw = new PrintWriter("D:\jsonObject.json")) {

 // JsonWriter oluşturuluyor
 JsonWriter jsonWriter = Json.createWriter(pw);

 // Json nesnesi dosya sistemine kazınıyor
 jsonWriter.writeObject(jsonObject);

}

Bu haliyle uygulama çalıştırıldığında jsonObject.json dosyası içinde;

{ “ad” : [” Emin ” , ” Şahin “ ] ,” soyad ” : ” Demir ” } içeriğinin oluşturulduğu görülür.

jsonObject.json olarak kaydedilen json dosyasının içeriği okunması ve okunan veriden Json nesne ağacı oluşturulmak isteniyorsa, aşağıdaki kod bütünü kullanılabilir.

JsonReader reader = 
    Json.createReader(new FileReader("D:\jsonObject.json"));

    JsonObject obj = reader.readObject();

    System.out.println("Okunan: "+obj.toString());

JSON-P ile dosya yazma ve okuma yapıldığında varsayılan olarak, JSON ifadeleri beyaz boşluklar (white-space) arındırılmış olarak çıktılanır. Bu şekilde olmasının dosya boyutu bakımından avantajı var ama kompleks Json çıktılarında okunurluğu azaltan bir sebep. Eğer elde edilecek çıktının, daha okunur halde çıktılanması istenirse, try() { .. } ifadesi içerisi aşağıdaki kod bütünüyle değiştirilebilir.

// Pretty printing için config Map oluşturulur.
Map<String, Boolean> config = new HashMap<>();

// Pretty printing özelliği eklenir.
config.put(JsonGenerator.PRETTY_PRINTING, true);

Json. 
createWriterFactory(config). // JsonWriterFactory
	createWriter(pw). // JsonWriter
	writeObject(jsonObject);

Bu işlem sonrası çıktının aşağıdaki gibi olduğu görülür.

{
    "ad":[
        "Emin",
        "Şahin"
    ],
    "soyad":"Demir"
}

Örnek 2: Twitter Api’ den dönen Json verisinin tüketilmesi

Dosya sisteminde olduğu gibi, Json verilerinin okunması ve yazılması, bir ağ ortamında da gerçekleşebilir. Bu örnek, twitter üzerinde “kodcucom” içeren twit’leri Json formatında elde etmekte, ardından belleğe JSON-P nesnesi olarak oluşturmakta ve en son bu nesneyi dosya sistemine kazımaktadır.

// URL nesnesi oluşturuluyor.
URL url = 
	new URL("http://search.twitter.com/search.json?q=kodcucom&page=1");

// URL kaynağından bayt ırmağı nesnesi alınıyor
InputStream is = url.openStream();

// Json nesne ağacı oluşturuluyor
JsonObject twitterObj = Json
			.createReader(is)
			.readObject();

// Son olarak dosya sistemine kazınıyor.
try (PrintWriter pw = new PrintWriter("D:\twitterObj.json")) {

	JsonWriter jsonWriter = Json.createWriter((pw));

	jsonWriter.write(twitterObj);

}

Örneklere buradan erişebilirsiniz.

Tekrar görüşmek dileğiyle..

Tag:backend, javaee7, json, json-p

  • Share:
author avatar
Rahman Usta
Kodedu.com bünyesinde eğitim ve danışmanlık faaliyetleri sürdüren Rahman Usta, 2012 yılında yayına çıkan popülerJava Mimarisiyle Kurumsal Çözümler ve 2014 yılında yayınlanan Java 8 Ebook kitaplarının yazarıdır. Açık kaynak dünyasına katkı veren yazar, geliştirdiği AsciidocFX projesiyle Duke's Choice Award 2015 ödülünü kazanmıştır. Rahman ayrıca, Istanbul JUG'un ve Java standartlarını geliştiren JCP (Java Community Process)'in bir üyesidir. 2018 yılında Java Şampiyonu olarak seçilmiştir.

Previous post

Java API for JSON Processing - JSON nesneleri oluşturmak
25 Mart 2013

Next post

Jax-RS 2 ve LongPolling destekli Chat uygulaması
16 Nisan 2013

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

    1 Comment

Leave A Reply Cevabı iptal et

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

E-posta listesine kayıt olun!






Gözde yazılar

Performans, Yük ve Stres Testleri
26Ağu2012
CDI – @Produces, @New ve @PostConstruct Notasyonları
22Tem2013
Java EE 8 ile yeni MVC Framework geliyor
03Eyl2014
Webiner : Java 8 | Project Lambda
07Ara2012

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • YAML Nedir? Neden YAML Kullanmalıyız? için shahriyar
  • Java Persistence API Nedir? (Giriş) için Utku
  • Java 8 – CompletableFuture ile Asenkron Programlama için Rahman Usta
  • Java 8 – CompletableFuture ile Asenkron Programlama için burak
  • Arm7 Nxp 2104 işlemci ile basit bir Uygulama için Mustafa Dinc

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.