我想知道是否可以使用java检查某些jsonArray中是否存在某个键。例如:假设我有这个json字符串:
{'abc':'hello','xyz':[{'name':'Moses'}]}
让我们假设这个数组存储在类型JSONArray
的jsnArray中。
我想检查jsnArray中是否存在'abc'键,如果它存在,我应该true
否则我应该得到false
(在'abc'的情况下我应该得到)。
Thnkas
答案 0 :(得分:2)
您发布的是JSONObject
,其中有JSONArray
。此示例中唯一的数组是数组'xyz'
,它只包含一个元素。
JSONArray示例如下:
{
'jArray':
[
{'hello':'world'},
{'name':'Moses'},
...
{'thisIs':'theLast'}
]
}
您可以测试包含在给定JSONArray
内的jArray
JSONObject
(与上述示例类似的情况)是否包含具有以下函数的密钥“hello”: / p>
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");
答案 1 :(得分:1)
由于开括号和右括号,使用正则表达式将无效。
您可以使用JSON库(如google-gson)将JSON数组转换为java数组,然后处理它。
答案 2 :(得分:1)
JSON数组没有键值对,JSON对象可以。
如果将其存储为json对象,则可以使用以下方法检查密钥: http://www.json.org/javadoc/org/json/JSONObject.html#has(java.lang.String)
答案 3 :(得分:1)
如果您使用Java中的JSON智能库来解析JSon String -
您可以使用以下代码段解析JSon Array -
喜欢 -
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/
中获得更多信息希望这能帮到你......