Soru & Cevap

İç içe JSON Sorunu ...

19.03.2016 - 12:11

 

Arkadaşlar yaklaşık 1 haftadır uğraşıp her yolu deneyipte yapamadığım bir sorunum var, umarım artık çözülür. Sorunum şu.

posts içindeki title vs. her şeyi çekip yazdırıyorum ama categories içerisindeki title yazdıramıyorum 

Görsel kaldırıldı.

 

Kod yapım şu şekilde ;

 

Görsel kaldırıldı.

 

Görsel kaldırıldı.

 

948 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-31393-1414952968.png
ozkanavci3
19.03.2016 - 06:04

Çok teşekkür ederim, elinize yüreğinize sağlık. Şuan o kodu  1. fotoğraf ta ki posts array inin altına ekledim şu şekilde ;

 JSONObject ilkEleman = array.getJSONObject(3);
                    JSONArray categories = ilkEleman.getJSONArray("categories");


                    JSONObject ilkKategori = categories.getJSONObject(0);
                    category = ilkKategori.getString("title");

 

Şuan tek sıkıntım verileri ekrana bastırırken hepsine o 3. kategori ismini alması.

Muhtemelen for döngüsünde o array i eklmemem gerekiyor, açıkçası pekte fikrim yok, bakalım nasıl yapacağım :))

Tekrardan çok teşekkür ederim, ekranda o bilginin yazması bile mutlu etti beni :)

Umut ONUR
19.03.2016 - 06:22
rica ederim.. :) evet for döngüsü kullanarak hepsine yazdırabilirsin. Ekstra bir bilgi : categories.size(); metodu ile array'daki eleman sayısını görebilirsin. Kolay gelsin..
picture-28812-1452251417.jpg
umutonur
19.03.2016 - 04:47

Merhaba Özkan. 
Fotograflarda yolladığın kodları tam olarak görememekle birlikte JSON String'inden yola çıkarak yardımcı olmaya çalışacağım.

{
    "status":"ok",
    "count":12,
    "post":[
       {
          "id":265,
          "type":"post",
          "categories":[
             {
                 "id":8,
                 "slug":"sebzeli-corbalar",
                 "title":"Sebzeli \u00c7orbalar"
             }
       }
}

Şeklinde bir JSON verisi var elimizde var ve bir bu veriyi json adındaki String değişkenine kaydettik.

JSON'a en baştan bir göz atacak olursak;

"status" anahtarı String değerini almış bir JSON Nesnesini,
"count" anahtarı int değerini almış bir JSON Nesnesini,
"post" anahtarı da bir JSON Dizini bize vermektedir.
 

Bizim bunları kullanabilmek için ; 

JSONObject object = new JSONObject(json);
String status = object.getString("status");
int count = object.getInt("count");

JSONArray post = object.getJSONArray("post);

şeklinde kodlayabiliriz. post isimli JSON Dizisinin ilk elemanını inceleyecek olursak ; 

"id" anahtarının bir int değerini,
"type" anahtarının bir String değerini,
"categories" anahtarı da bir JSON Dizini bize vermektedir.

bunları kullanabilmek için ise ; 

JSONObject ilkEleman = jsonArray.getJSONObject(0);
int id = ilkEleman.getInt("id");
String type = ilkEleman.getString("type");
           
JSONArray categories = ilkEleman.getJSONArray("categories");

burada jsonArray.getJSONObject(0); yaparak jsonArray dizisinin ilk elemanını aldık. Tıpki bildiğimiz dizilerde olduğu gibi burdaki "0" dizinin index numarasıdır. "0" yerine "1" yapmış olsaydık dizinin ikinci elemanını almış olacaktık.

 Evet.. "categories" dizisini de tanımladıktan sonra geriye "title" isimli anahtarın değerini almak kalıyor.

"categories" dizisinde yaptığımız işlemin aynısını burada yapıyoruz. 

JSONObject ilkKategori = categories.getJSONObject(0);
            
String title = ilkKategori.getString("title");

 

Olayı en basit ve anlaşılır şekliyle anlatmaya çalıştım.
Umarım yardımcı olabilmişimdir..

ERAY BURUNCUK
13.10.2019 - 02:57
Merhaba; Bende aynı konu üzerinde işlem yapmak istiyorum. Yazdığınız kodlar c# için değil galiba. Yardımcı olabilir misiniz?