检查JSON中是否存在对象

时间:2012-04-06 21:22:15

标签: android json deserialization gson

我需要知道JSON字符串中是否存在对象,并根据该对象的存在执行不同的操作。如果它不存在,我想省略该对象,因为它抛出NullPonterException。我尝试使用 if 但没有成功......有人能告诉我如何检查对象是否存在?

提前谢谢!

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:4)

您可以在JSONObjects上使用isNull()函数。

“boolean isNull(String name) 如果此对象没有名称映射或者其值为NULL的映射,则返回true。

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)

答案 2 :(得分:2)

使用JSONObject.has(String)。

 JSONObject MyObject = null;
 if(JSONObject.has("ObjectName")){
        MyObject = JSONObject.getJSONObject("ObjectName");
 }

 if(MyObject != null){
  // do stuff
 }

http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

答案 3 :(得分:1)

或者......更简洁......

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