JSON Kullanımı (Java İçin..)
Geçen dersimizde JSON’lara en genel şekilde bir giriş yapmıştık. Bu dersimizde ise Java Programlama yaparken JSON’ların nasıl kullanılacağı hakkında bilgiler vererek konunun biraz daha pekişmesine olanak sağlayacağız.
Eğer projenizde JSON kütüphanesi ekli değilse aşağıdaki linkten kütüphaneyi indirip projenize dahil etmeniz gerekmektedir..
JSON Kütüphanesi indirmek için tıklayın.. (java-json.jar)
Bir önceki dersimizde, bir JSON verisinin; JSON Nesnelerinin (JSON Object) ve/veya JSON Dizilerinin (JSON Array) bir araya gelmesiyle oluştuğundan bahsetmiştik.
Java Programlama Diline dönecek olursak, en basit haliyle JSON Nesnesi şu kodlarla oluşturulur.
1 2 3 |
JSONObject ilkJSON = new JSONObject(); |
ilkJSON nesnemiz şuan hiçbir veri barındırmamaktadır.
Bu boş JSON nesnesinin çıktısına bakacak olursak;
1 2 3 4 5 6 7 8 9 10 11 12 |
public class JSONProjesi { public static void main(String[] args) { JSONObject ilkJSON = new JSONObject(); System.out.println(ilkJSON); } } |
Ekran Çıktısı:
1 2 3 4 5 |
run: {} BUILD SUCCESSFUL (total time: 0 seconds) |
Gördüğünüz gibi ilkJSON nesnemizin içi boş olduğundan sadeceaçık ve kapalı süslü parantez “{}” şeklinde bir çıktı aldık. Peki nesnemizin içine herhangi bir değer eklediğimizde durum nasıl oluyor?
JSON Nesnesine bir değer eklemek için:
JSONNesnesi.put(“anahtar”,değer);Burada dikkat etmemiz gerek bir nokta var. JSON Nesnesine herhangi bir veri eklerken anahtar kelimemiz String tipinde bir veri olmak zorundadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class JSONProjesi { public static void main(String[] args) { JSONObject ilkJSON = new JSONObject(); try { ilkJSON.put("Adım", "Umut"); System.out.println(ilkJSON); } catch (JSONException ex) { Logger.getLogger(JSONProjesi.class.getName()).log(Level.SEVERE, null, ex); } } } |
Ekran Çıktısı:
1 2 3 4 5 |
run: { "Adım":"Umut" } BUILD SUCCESSFUL (total time: 0 seconds) |
JSON verimize yeni bir değer eklerken JSONException istisnası fırlatma gibi bir durum söz konusu olduğundan bu kısmı try – catch bloğu içinde yazmak durumundayız. Genelde kullandığınız IDE’ler (NetBeans, Eclipse, Intellij IDEA v.b..) bu konuda size uyarı verecek ve gerekli kodları try – catch bloğu içine almanıza yardımcı olacaktır.
Bu örnekte JSON Nesnemize anahtarı “Ad” olan, “Umut” yazı (String) tipinde değer alan bir veri eklemiş bulunuyoruz.
Örnekleri biraz çoğaltacak olursak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class JSONProjesi { public static void main(String[] args) { JSONObject ilkJSON = new JSONObject(); try { ilkJSON.put("Adım", "Umut"); ilkJSON.put("Soyadım", "ONUR"); ilkJSON.put("Yaşım", 26); ilkJSON.put("Mezuniyet Durumum", true); System.out.println(ilkJSON); } catch (JSONException ex) { Logger.getLogger(JSONProject.class.getName()).log(Level.SEVERE, null, ex); } } } |
Ekran Çıktısı:
1 2 3 4 5 |
run: { "Adım":"Umut", "Soyadım":"ONUR", "Yaşım":26, "Mezuniyet Durumum":true } BUILD SUCCESSFUL (total time: 0 seconds) |
Bu örneğimizde ise;
Anahtar: “Soyad” , Değer: “ONUR” – Yazı (String Tipi Veri) Eklenmiştir.
Anahtar: “Yaş” , Değer: 26 – Tam Sayı (String Tipi Veri) Eklenmiştir.
Anahtar: “Mezuniyet Durumu” , Değer: true – Doğru/Yanlış (Boolean Tipi Veri) Eklenmiştir.
Bir JSON verisi eklerken Anahtarımız String tipinde olmak zorunda iken, bu anahtarın referans olduğu Değerimiz String, Int, Boolean, Array (Dizi), Object (Nesne), HashMap (Anahtar-Değer ilişkisine dayalı başka bir veri tipi) gibi farklı tiplerde de olabilir.
Bir JSON Dizisine (JSON Array) veri ekleme de yine put() metodu kullanılarak yapılır. Fakat bahsettiğimiz JSON Array; bir dizi olması sebebiyle, ekleme yaparken herhangi bir anahtar’a gereksinim duymaz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class JSONProjesi { public static void main(String[] args) { try { // JSON Nesnemizi oluşturuyoruz. JSONObject ilkJSON = new JSONObject(); ilkJSON.put("Adım", "Umut"); ilkJSON.put("Soyadım", "ONUR"); ilkJSON.put("Yaşım", 26); ilkJSON.put("Mezuniyet Durumum", true); // JSON Dizimizi oluşturuyoruz. JSONArray ilkArrayJSON = new JSONArray(); ilkArrayJSON.put("Java"); ilkArrayJSON.put("Android"); ilkArrayJSON.put("Swift"); ilkJSON.put("Programlama Dilleri", ilkArrayJSON); System.out.println(ilkJSON); } catch (JSONException ex) { Logger.getLogger(JSONProject.class.getName()).log(Level.SEVERE, null, ex); } } } |
Ekran Çıktısı:
1 2 3 4 5 |
run: { "Adım":"Umut", "Soyadım":"ONUR", "Yaşım":26, "Mezuniyet Durumum":true, "Programlama Dilleri":[ "Java", "Android", "Swift"] } BUILD SUCCESSFUL (total time: 0 seconds) |
Yukarıdaki örnekte de gördüğünüz gibi bir JSONObject içine JSONArray eklememizde bir sakınca olmadığı gibi, bunun tam tersini yapabilmemizde mümkündür. Yani istersek JSONArray içine JSONObject’te ekleyebiliriz.
Şimdi de bir JSON verisindeki değerlere nasıl erişeceğimiz ile ilgili bir örnek yapalım.
JSON içerisindeki bir veriye erişebilmek için;
JSONNesnesi.get(“Anahtar adı”);
JSONDizisi.get(index);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
public class JSONProjesi { public static void main(String[] args) { try { // JSON Nesnemizi oluşturuyoruz. JSONObject ilkJSON = new JSONObject(); ilkJSON.put("Adım", "Umut"); ilkJSON.put("Soyadım", "ONUR"); ilkJSON.put("Yaşım", 26); ilkJSON.put("Mezuniyet Durumum", true); // JSON Dizimizi oluşturuyoruz. JSONArray ilkArrayJSON = new JSONArray(); ilkArrayJSON.put("Java"); ilkArrayJSON.put("Android"); ilkArrayJSON.put("Swift"); ilkJSON.put("Programlama Dilleri", ilkArrayJSON); // Değişkenlerimizi tanımlıyoruz. String Ad, Soyad; int Yas; boolean MezuniyetDurumu; JSONArray ProgramlamaDilleri; Ad = (String) ilkJSON.get("Adım"); Soyad = (String) ilkJSON.get("Soyadım"); Yas = (int) ilkJSON.get("Yaşım"); MezuniyetDurumu = (boolean) ilkJSON.get("Mezuniyet Durumum"); ProgramlamaDilleri = (JSONArray) ilkJSON.get("Programlama Dilleri"); // Değişkenlerimizi yazdırıyoruz... System.out.println("Programcının Adı: " + Ad); System.out.println("Programcının Soyadı: " + Soyad); System.out.println("Programcının Yaşı: " + Yas); System.out.println("Mezuniyet Durumu: " + MezuniyetDurumu); System.out.println("Kullandığı Programlama Dilleri: " + ProgramlamaDilleri.get(0) + ", " + ProgramlamaDilleri.get(1) + ", " + ProgramlamaDilleri.get(2)); } catch (JSONException ex) { Logger.getLogger(JSONProject.class.getName()).log(Level.SEVERE, null, ex); } } } |
Ekran Çıktısı:
1 2 3 4 5 6 7 8 9 |
run: Programcının Adı: Umut Programcının Soyadı: ONUR Programcının Yaşı: 26 Mezuniyet Durumu: true Kullandığı Programlama Dilleri: Java, Android, Swift BUILD SUCCESSFUL (total time: 1 seconds) |
get(“anahtar”) metoduyla bir veriye erişim sırasında “anahtar” kelimesini belirtirken büyük-küçük harf duyarlılığının olduğunu unutmamalıyız.
Yukarıda ilkJSON.get(“Adım”); yerine ilkJSON.get(“adım”); şeklinde bir komut uygulasaydık, belirttiğimiz anahtarla ilgili herhangi bir değere erişim sağlamamız mümkün olmayacaktı.
Bir JSON verisinde get() metodu veriye erişimi sağlarken, herhangi bir veriyi silmek remove(“Anahtar“) , veriyi güncelemek için ise yine put(“Anahtar”, Güncel Değer) metodu kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class JSONProjesi { public static void main(String[] args) { try { // JSON Nesnemizi oluşturuyoruz. JSONObject ilkJSON = new JSONObject(); ilkJSON.put("Adım", "Umut"); ilkJSON.put("Soyadım", "ONUR"); ilkJSON.put("Yaşım", 26); ilkJSON.put("Mezuniyet Durumum", true); System.out.println("JSON'un Ilk Hali : \n" + ilkJSON); // Veri Silme ilkJSON.remove("Mezuniyet Durumum"); // Veri Güncelleme ilkJSON.put("Yaşım", 27); System.out.println("JSON'un Son Hali : \n" + ilkJSON); } catch (JSONException ex) { Logger.getLogger(JSONProject.class.getName()).log(Level.SEVERE, null, ex); } } } |
Ekran Çıktısı:
1 2 3 4 5 6 7 8 |
run: JSON'un Ilk Hali : { "Adım":"Umut", "Yaşım":26, "Soyadım":"ONUR", "Mezuniyet Durumum":true } JSON'un Son Hali : { "Adım":"Umut", "Yaşım":27, "Soyadım":"ONUR" } BUILD SUCCESSFUL (total time: 0 seconds) |
JSON verilerinin Java Programlama Dilinde kullanımının nasıl olduğunu genel hatlarıyla anlatmaya çalıştım.
İsteyen arkadaşlar aşağıdaki link tıklayarak JSON hakkında daha detaylı bilgi edebilirler.
Bir sonraki makalede JSON verilerinin Android platformunda nasıl kullanıldığından bahsedip biraz daha karmaşık örneklerle konuyu daha da pekiştirmeye çalışacağım.
Şimdilik anlatacaklarım bu kadar.
Takipte kalın.. 😉
JSON Hakkında Detaylı Bilgi İçin:
http://www.json.org/json-tr.html
Çok güzel bir yazı. Teşekkürler
rica ederim.. 🙂
Allah sizden razi olsun ve sizi qorusun, minnetdaram, gozel izahat idi.
JSONObject ilkJSON = new JSONObject(); JSONObject hep kırmızı oluyor bir türlü başlayamadım
teşekkürler sizin gibi insanlar olması çok güzel
anlatımın çok iyi olmuş kardeşim saol