如何检查json密钥是否存在?

问题

所以,我从服务器获取了一些JSON值,但我不知道是否会有特定的字段。

所以喜欢:

{ "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited"
}

有时,会有一个额外的字段,如:

{ "regatta_name":"ProbaRegatta",
  "country":"Congo",
  "status":"invited",
  "club":"somevalue"
}

我想检查名为"club"的字段是否存在,以便在解析时我不会得到org.json.JSONException:没有值为俱乐部


#1 热门回答(191 赞)

JSONObject类有一个名为"has"的方法:
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)>如果此对象具有name的映射,则返回true。映射可以是NULL。


#2 热门回答(116 赞)

你可以通过这种方式检查'HAS' - 如果此对象具有name的映射,则返回true。映射可以是NULL。

if (json.has("status")) {
   String status = json.getString("status"));
}

if (json.has("club")) {
   String club = json.getString("club"));
}

你还可以使用'isNull'进行检查 - 如果此对象没有名称映射或者其值为NULL,则返回true。

if (!json.isNull("club"))
    String club = json.getString("club"));

#3 热门回答(11 赞)

你可以JSONObject#has,提供key输入并检查方法是否返回truefalse。你也可以

useoptString不是getString

返回按名称映射的值(如果存在),必要时强制转换它。如果不存在此类映射,则返回空字符串