java nested JSONArray



我想知道是否有可能检查一些键是否存在于一些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/中获得更多信息

相关内容

  • 没有找到相关文章

最新更新