2015-06-02 17 views
8

Android'de aşağıdaki gibi bir diziyi nasıl ayrıştırırım?Android'in anahtarı olmadan JSON Dizisini Ayrıştırma

[ 
5, 
10, 
15, 
20 
] 

Gördüğünüz gibi, bu gibi olan diğer örnek diziler gibi dizi tanımlama hiçbir anahtar yoktur: İkinci dizide için

{ 
"items": [ 
    5, 
    10, 
    15 
    ] 
} 

, ben kolayca JSONObject ve sadece yapabilir Kullanıldığı haliyle, ilk dizinin anahtarı yoktur. Ancak, açıkça görüldüğü gibi, ilk dizinin anahtarı bulunmamaktadır. Peki bu nasıl olur? Standart Android kütüphanelerinde bile mümkün mü?

cevap

11

Bunu yapmayı denediniz mi?

try { 
    JSONArray itemArray=jsonObject.getJSONArray("items"); 
    for (var item : itemArray) { 
     System.out.println(item); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Bu, ikinci JSON dosyasını ayrıştırmaz mı? Sorumu kafa karıştırıcı bir şekilde yazılırsa özür dilerim. İlk JSON dosyasını, "item" ("öğeler") tuşu olmayan ayrıştırmak istiyorum. Bu benim JSONArray'ımın aldığım JSON dosyasına ayarlanması anlamına mı geliyor? –

+1

Evet, bu ikinci JSON dosyasını ayrıştırırdı. Üzgünüm, sorunuzu anlamadım. İlk JSONArray'i almak için, JSONArray itemArray = yeni JSONArray (yourstringname); '' yourstringname' 'JSON dosyanızı tutan bir String değişkeni (bu bir string olduğunu varsayalım) gibi bir şey yaparsınız. aynısı. –

+1

Mükemmel, sadece denedim ve amaçlandığı gibi çalışır. Eğer sakıncası olmazsa, cevabınızı değiştirebilir misiniz, böylece gelecekteki okuyucular/referanslar için soruyla eşleşir mi? Bundan sonra kabul edeceğim. –

0

sayfaForeach versiyonunu düşünün potansiyel JSONException

0

Öyle gibi JSONArray kurucusuna dizi dize iletebilirsiniz:

String itemsJson = "[5,10,15,20]"; 
JSONArray itemArray = new JSONArray(itemsJson); 

Not: bir try/catch veya throws eklemek zorunda kalacak

try { 
    // jsonString is a string variable that holds the JSON 
    JSONArray itemArray=new JSONArray(jsonString); 
    for (int i = 0; i < itemArray.length(); i++) { 
     int value=itemArray.getInt(i); 
     Log.e("json", i+"="+value); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
0

Burada json dizisindeki verilere doğrudan erişebilirsiniz.

JSONArray itemArray = jsonObject.getJSONArray("items"); 

for(int i=0;i<itemarray.length;i++) 

{ 

int i = Integer.ParseInt(itemarray.get(i)); 

Log.i("Value is:::",""+i); 

}