我想知道是否有可能检查一些键是否存在于一些jsonArray使用java。例如:我们有这样一个json字符串:
{'abc':'hello','xyz':[{'name':'Moses'}]}
让我们假设这个数组存储在来自类型JSONArray
的jsnArray中。我想检查'abc'键是否存在于jsnArray中,如果它存在,我应该得到true
,否则我应该得到false
(在'abc'的情况下,我应该得到true)。Thnkas
你发布的是一个JSONObject
,里面有一个JSONArray
。本例中唯一的数组是数组'xyz'
,它只包含一个元素。
JSONArray的示例如下:
{
'jArray':
[
{'hello':'world'},
{'name':'Moses'},
...
{'thisIs':'theLast'}
]
}
你可以测试一个JSONArray
名为jArray
,包含在一个给定的JSONObject
中(类似于上面的例子)是否包含键'hello',使用以下函数:
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");
使用正则表达式将无法工作,因为开始和结束括号。
您可以使用JSON库(如google-gson)将JSON数组转换为java数组,然后处理它
JSON数组没有键值对,JSON对象有。
如果您将其存储为json对象,您可以使用以下方法检查键:http://www.json.org/javadoc/org/json/JSONObject.html(以)
如果你在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/中获得更多信息