2012-04-06 2 views
3

Мне нужно знать, существует ли объект в строке JSON и делать разные вещи в зависимости от существования этого объекта. Если он не существует, я хочу опустить объект, потому что он генерирует исключение NullPonterException. Я пробовал использовать , если, но не успел ... Может ли кто-нибудь сказать мне, как я могу проверить существование объекта?Проверьте, существует ли объект в JSON

Спасибо заранее!

+2

Покажите нам код, который вы пробовали. –

+1

Показать код, но в качестве стартера - попробовали ли вы использовать методы opt, например. 'JSONObject # optJSONObject (String)' или аналогичный? Они возвращают 'null', если сопоставление не существует вместо исключения. – Jens

ответ

14

попробовать что-то вроде следующего:

String jsonString = yourJsonString; 
String nameOfObjectInQuestion = "yourObjectInQuestion"; 
JSONObject json = null; 
JSONObject objectInQuestion = null; 
try { 
    json = new JSONObject(jsonString); 
    objectInQuestion = json.getJSONObject(nameOfObjectInQuestion); 
} 
catch (JSONException ignored) {} 

if (objectInQuestion == null) { 
    // Stomp your feet 
} 
else { 
    // Clap your hands 
} 
+0

Philips Это работает как шарм! Моя проблема решена, но ... есть ли способ получить тот же результат, но делать это с библиотекой GSON? Большое спасибо! –

4

Вы можете использовать функцию IsNull() на JSONObjects.

"логическое IsNull (имя String) Возвращает истину, если этот объект не имеет никакого отображения для имени или если оно имеет отображение, значение которого равно NULL."

JSONObject contact = venueitem.getJSONObject("contact"); 

if (contact.isNull("formattedPhone") == false) 
    venue.phone = contact.getString("formattedPhone"); 
else 
    { 
    ... 
    } 

Источник: http://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)

+0

Следующая строка вызовет исключение. JSONObject contact = venueitem.getJSONObject ("контакт"); –

1

Или .. более кратким ...

myJSONObject.isNull("myfield")?"":myJSONObject.getString("myfield")