2012-04-06 126 views
3

我需要知道一個對象是否存在於JSON字符串中,並根據該對象的存在情況做不同的事情。如果它不存在,我想省略該對象,因爲它拋出NullPonterException。我試過使用如果但沒有成功......有人能告訴我如何檢查對象的存在?檢查一個對象是否存在於JSON中

預先感謝您!

+2

向我們展示你嘗試過的代碼。 – 2012-04-06 21:27:09

+1

顯示代碼,但作爲初學者 - 您是否嘗試過使用opt方法,例如'JSONObject#optJSONObject(String)'或類似的?如果映射不存在而不是異常,它們返回'null'。 – Jens 2012-04-06 21:30:41

回答

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庫呢?非常感謝你! – 2012-04-08 14:54:21

4

您可以在一個JSONObjects使用ISNULL()函數。

「布爾ISNULL(字符串名稱)如果這個對象的名字沒有映射或 返回true,如果它有一個映射,其值爲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(「contact」); – 2015-05-27 13:38:42

1

或..更簡潔...

myJSONObject.isNull("myfield")?"":myJSONObject.getString("myfield") 
相關問題