我想知道是否可以使用 java 检查某些 jsonArray 中是否存在某些键。例如:假设我有这个 json 字符串:
{'abc':'hello','xyz':[{'name':'Moses'}]}
让我们假设这个数组存储在 Type 的 jsnArray 中JSONArray
。我想检查 jsnArray 中是否存在“abc”键,如果存在,我应该得到true
,否则我应该得到false
(在“abc”的情况下,我应该得到真)。思卡斯
你发布的是一个JSONObject
,里面有一个JSONArray
。在此示例中,您拥有的唯一数组是 array 'xyz'
,它只包含一个元素。
JSONArray 示例如下:
{
'jArray':
[
{'hello':'world'},
{'name':'Moses'},
...
{'thisIs':'theLast'}
]
}
您可以使用以下函数测试是否包含在给定(类似于上面示例的情况)中的被调用包含键“hello” JSONArray
:jArray
JSONObject
boolean containsKey(JSONObject myJsonObject, String key) {
boolean containsHelloKey = false;
try {
JSONArray arr = myJsonObject.getJSONArray("jArray");
for(int i=0; i<arr.length(); ++i) {
if(arr.getJSONObject(i).get(key) != null) {
containsHelloKey = true;
break;
}
}
} catch (JSONException e) {}
return containsHelloKey;
}
并以这种方式调用:
containsKey(myJsonObject, "hello");
如果您在 Java 中使用 JSON 智能库来解析 JSon 字符串 -
您可以使用以下代码片段解析 JSon 数组 -
喜欢 -
JSONObject resultsJSONObject = (JSONObject) JSONValue.parse(<<Fetched JSon String>>);
JSONArray dataJSon = (JSONArray) resultsJSONObject.get("data");
JSONObject[] updates = dataJSon.toArray(new JSONObject[dataJSon.size()]);
for (JSONObject update : updates) {
String message_id = (String) update.get("message_id");
Integer author_id = (Integer) update.get("author_id");
Integer createdTime = (Integer) update.get("created_time");
//Do your own processing...
//Here you can check null value or not..
}
您可以在 - https://code.google.com/p/json-smart/获得更多信息
希望这可以帮助你...
JSON 数组没有键值对,JSON 对象有。
如果将其存储为 json 对象,则可以使用以下方法检查密钥:http: //www.json.org/javadoc/org/json/JSONObject.html#has(java.lang.String)
由于开括号和右括号,使用正则表达式将不起作用。
您可以使用 JSON 库(如google-gson)将您的 JSON 数组转换为 java 数组,然后对其进行处理。