3

我需要知道一个对象是否存在于 JSON 字符串中,并根据该对象的存在做不同的事情。如果它不存在,我想省略该对象,因为它会抛出 NullPonterException。我试过使用if但没有成功...有人可以告诉我如何检查对象的存在吗?

先感谢您!

4

4 回答 4

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
}
于 2012-04-06T21:52:38.883 回答
4

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

"boolean isNull(String name) 如果此对象没有 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)

于 2012-12-09T00:54:48.733 回答
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)

于 2015-05-27T13:37:43.540 回答
1

或者..更简洁...

myJSONObject.isNull("myfield")?"":myJSONObject.getString("myfield")
于 2013-11-29T11:18:30.487 回答