21 Mart 2017 Salı

Java application İçerisinde JSON kullanımı



JSON nedir?


    JSON ( JavaScript Objects Notation ) XML’e alternatif olarakda düşünebileceğimiz programlama dilleri arasında veri gönderme / alma yöntemidir. XML e kıyasla daha rahat kullanım sunan JSON hem hız hemde kapladığı alanın az olması bakımından  da öne çıkmaktadır.
JSON  key – value (anahtar / değer) mantığından esaslanarak kullanım sunmaktadır. Örnek vermek istersek;
Ad: Burhan, Soyad: Arslan, City: İstanbul yukarıdaki örneklerde “ad, soyad ve city” değerleri “key” lerdir.  “Burhan, Arslan ve İstanbul ” değerleri ise “value” lardir yani değerler.

JSON Oluşturma:

[  
   {  
      "ad":"burhan",
      "soyad":"Arslan",
      "city":"istanbul"
   },
   {  
     "ad":"ibrahim",
      "soyad":"Arslan",
      "city":"ankara"
   },
   {  
      "ad":"hakan",
      "soyad":"Arslan",
      "city":"bursa"
   }
]
Yukarıda örneğimizde dizisi içerisinde ad ve soyad ve city  Keylerine bağlı kayıtlar görünmektedir.

Java uygulamasında Json Kullanımı:

Java Uygulamamız aracılığıyla basit bir kayıt dosyası (Json) oluşturucaz ve yine uygulamamız aracılığıyla bu dosyaya veriler gönderip verileri geri alıp kullanacağız. Uygulamaya başlamadan önce kullandığınız IDE üzerinde maven projesi oluşturun. Öncelikle javada JSON kullanabilmeniz için GSON kütüphanesini projemize eklemiz gerekiyor.
Projeyi açtıktan sonra pom.xml dosyanıza şu bağımlılık kodu ekleyin:

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <version>2.8.0</version>
    </dependency>
</dependencies>

Eğer herhangi bir ayarı değiştirilmedi ise Eclipse IDE pom.xml’i kaydettiğimizde kütüphaneyi indirip classpath’e koyar.

Kullanacağımız kullanicilar POJO sınıfımız şöyle olacak:

package com.mycompany.gsonwithjson;

public class kullanici {
    String ad;
    String soyad;
    String city;
    public String getAd()
    {
        return ad;
    }
    public void setAd(String ad)
    {
        this.ad=ad;  
    }
    public String getSoyad()
    {
        return soyad;
    }
    public void setSoyad(String soyad)
    {
        this.soyad =soyad ;
    }
    public String getCity()
    {
        return city;
    }
    public void setCity(String city)
    {
        this.city=city;
    }
 @Override
    public String toString()
    {
        return "kullanici{" + "ad=" ad+ ", soyad="soyad+ ", city="city+ '}';
    }
}

Kullanici sınıfımız gördüğünüz gibi son derece basit. ad, soyad, city alanları ve onların get set metotları yer alıyor.

----------------------------------------------------------------------------------------

Javadan JSON 'a dönüşüm:

Pojo’muzu oluşturduktan sonra javadanJsona Adında bir class oluşturuyoruz ve buraya kontrol kodlarımızı yazıyoruz.

package com.mycompany.gsonwithjson;
import com.google.gson.Gson;
importjava.util.ArrayList;
importjava.util.List;

public class javadanJsona {
    public static void main(String[] args) {
        kullanici personel=new kullanici();
        personel.setAd("burhan");
        personel.setSoyad("arslan");
        personel.setCity("isytanbul");
     
     
         kullanici personel2 =new kullanici();
        personel2.setAd("memet");
        personel2.setSoyad("ayhan");
        personel2.setCity("isytanbul");
     
        kullanici personel3 =new kullanici();
        personel3.setAd("hakan");
        personel3.setSoyad("atalay");
        personel3.setCity("bilecik");
     
        List<kullanici> personelList;
        personelList = new ArrayList<>();
        personelList.add(personel);
        personelList.add(personel2);
        personelList.add(personel3);
     
     
        Gson gson = new Gson();
        System.out.println(gson.toJson(personelList));
     
    }
 
}

javadanJsona  clasımızı derlediğimiz zaman consoldaki ekran çıkrımız aşagıdaki gibi olursa JSON dönüşümü yapmış bulunmaktayız.



--- exec-maven-plugin:1.2.1:exec (default-cli) @ GsonwithJson ---
[{"ad":"burhan","soyad":"arslan","city":"isytanbul"},{"ad":"memet","soyad":"ayhan","city":"isytanbul"},{"ad":"hakan","soyad":"atalay","city":"bilecik"}]
--------------------------
BUILD SUCCESS
--------------------------
---------------------------------------------------------------------------------------------------------------

JSON' dan Javaya Dönüşüm:

Şimdi bir Json dosyasından dönüşüm nasıl yaparız ona değinelim.Yukarıdaki Json çıktısını https://jsonformatter.curiousconcept.com/ adresi üzerinden formatlayalım. Uzantısı .json olan bir dosya oluşturup formatladığımız Json’ı içine kopyalayalım.

[  
   {  
      "ad":"burhan",
      "soyad":"Arslan",
      "city":"istanbul"
   },
   {  
     "ad":"ibrahim",
      "soyad":"Arslan",
      "city":"ankara"
   },
   {  
      "ad":"hakan",
      "soyad":"Arslan",
      "city":"bursa"
   }
]

Yukarıdaki Json’dan okuma yaparak Java objelerine çevirecek Jsondanjavaya sınıfımız da şu şekilde:


package com.mycompany.gsonwithjson;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;


public class JsondanJavaya {

    public static void main(String[] args) {
        Gson gson = new Gson();
         List<kullanici> personelList =new ArrayList<>();
        try {
            FileReader fileReader = new FileReader("src/main/resources/jsonFile.json");
            JsonParser jsonParser =new JsonParser();
            JsonArray jsonArray= jsonParser.parse(fileReader).getAsJsonArray();
            for (JsonElement jsonElement : jsonArray) {
                kullanici personel= gson.fromJson(jsonElement, kullanici.class);
                personelList.add(personel);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        for (kullanici personel : personelList) {
            System.out.println(personel);
        }
     
    }
 
}

JsondanJavaya  Ekran Çıktımız:

--- exec-maven-plugin:1.2.1:exec (default-cli) @ GsonwithJson ---

kullanici{ad=burhan,   soyad=Arslan,  city=istanbul}
kullanici{ad=ibrahim,  soyad=Arslan,  city=ankara}
kullanici{ad=hakan,    soyad=Arslan,  city=bursa}

----------------------------
BUILD SUCCESS
----------------------------









Hiç yorum yok:

Yorum Gönder