2014-10-02 4 views
0

Я получаю JSON с разной структурой. Один - с галереей, а другой нет.JSON с разной структурой - Android

Первый JSON: (без галереи)

{ 
    "id": "12345", 
    "title": "titletitle", 
    "fulltext": "texttext", 
    "related_articles":[ 
    { 
     "id": "12346", 
     "title": "titletitle", 
     "image_name": "www.example.com/img1.png" 
    }, 
    { 
     "id": "12347", 
     "title": "titletitle", 
     "image_name": "www.example.com/img2.png" 
    } 
    ] 
} 

Второй JSON (с галереей)

{ 
    "id": "12345", 
    "title": "titletitle", 
    "fulltext": "texttext", 
    "gallery": [ 
    "www.example.com/img1.png", 
    "www.example.com/img1.png", 
    "www.example.com/img1.png", 
    "www.example.com/img1.pngg", 
    "www.example.com/img1.png" 
    ], 
    "related_articles":[ 
    { 
     "id": "12346", 
     "title": "titletitle", 
     "image_name": "www.example.com/img1.png" 
    }, 
    { 
     "id": "12347", 
     "title": "titletitle", 
     "image_name": "www.example.com/img2.png" 
    } 
    ] 
} 

Я помещаю этот JSON в массив так:

data = whole JSON file, which I get from web service 
JSONObject jRealObject = new JSONObject(data); 

title = jRealObject.getString("title").toString(); 
text = jRealObject.getString("fulltext").toString(); 

JSONArray jArray = jRealObject.getJSONArray("gallery"); 
for (int i = 0; i < jArray.length(); i++) { 
    gallery.add(jArray.getString(i)); 
} 

JSONArray jArray = jRealObject.getJSONArray("related_articles"); 
for (int i = 0; i < jArray.length(); i++) { 
    jRealObject = jArray.getJSONObject(i); 

    relatedId[i] = jRealObject.getString("id").toString(); 
    relatedTitle[i] = jRealObject.getString("title").toString(); 
    relatedImage[i] = jRealObject.getString("image_name").toString(); 
} 

Так когда я получаю JSON с галереей, он отлично работает, но когда в статье нет галереи, я получаю исключение:

W/System.err(30635): org.json.JSONException: No value for gallery 

Как проверить, есть ли «галерея» в JSON ??

+1

возможно дубликат [Проверьте, существует ли объект в JSON] (http://stackoverflow.com/questions/10049415/check-if-an-object-exists -in-json) – mccannf

ответ

0
JSONArray jArray = jRealObject.optJSONArray("gallery",null); 

if(jArray != null) 

    for (int i = 0; i < jArray.length(); i++) { 
     gallery.add(jArray.getString(i)); 
    } 
+0

Да, спасибо, но вам не нужно добавлять нуль, только: JSONArray jArray = jRealObject.optJSONArray ("gallery"); – KiKo

+0

yaa thats optional :) –

1

Вы можете использовать GSON библиотеки, эта библиотека является JSON синтаксического анализа к объектам и очень мощный.

Здесь у вас есть пример, вы можете реализовать эту библиотеку с ответом json.

+0

Спасибо, я проверю это :) – KiKo

Смежные вопросы