java嵌套的JSONArray

时间:2013-03-15 17:15:13

标签: java json parsing arrays

我想知道是否可以使用java检查某些jsonArray中是否存在某个键。例如:假设我有这个json字符串:

{'abc':'hello','xyz':[{'name':'Moses'}]}

让我们假设这个数组存储在类型JSONArray的jsnArray中。 我想检查jsnArray中是否存在'abc'键,如果它存在,我应该true否则我应该得到false(在'abc'的情况下我应该得到)。 Thnkas

4 个答案:

答案 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/

中获得更多信息

希望这能帮到你......