Java如何循环遍历Json数组?

39

我正在尝试循环遍历以下的JSON

{
    "dataArray": [{
        "A": "a",
        "B": "b",
        "C": "c"
    }, {
        "A": "a1",
        "B": "b2",
        "C": "c3"
    }]
}

我目前得到的:

JSONObject jsonObj = new JSONObject(json.get("msg").toString());

for (int i = 0; i < jsonObj.length(); i++) {
    JSONObject c = jsonObj.getJSONObject("dataArray");

    String A = c.getString("A");
    String B = c.getString("B");
    String C = c.getString("C");

}

有任何想法吗?

4个回答

73
在你的代码中,元素dataArray是一个JSON对象数组,而不是一个JSON对象本身。元素ABCdataArray JSON数组内部的JSON对象的一部分。
你需要遍历这个数组。
public static void main(String[] args) throws Exception {
    String jsonStr = "{         \"dataArray\": [{              \"A\": \"a\",                \"B\": \"b\",               \"C\": \"c\"            }, {                \"A\": \"a1\",              \"B\": \"b2\",              \"C\": \"c3\"           }]      }";

    JSONObject jsonObj = new JSONObject(jsonStr);

    JSONArray c = jsonObj.getJSONArray("dataArray");
    for (int i = 0 ; i < c.length(); i++) {
        JSONObject obj = c.getJSONObject(i);
        String A = obj.getString("A");
        String B = obj.getString("B");
        String C = obj.getString("C");
        System.out.println(A + " " + B + " " + C);
    }
}

打印

a b c
a1 b2 c3

我不知道你代码片段中的 msg 是从哪里来的。


8

0

这里有一种不需要索引的方法...

JsonArray jsonArray;
Iterator<JsonElement> it = jsonArray.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}

如果您正在使用 io.vertx.core.json.JsonArray 等内容,您将需要从 Object 进行转换:

JsonArray jsonArray;
Iterator<Object> it = jsonArray.iterator();
while(it.hasNext()){
    JsonObject jobj = (JsonObject) it.next();
    System.out.println(jobj);
}

0
JsonArray jsonArray = (JsonArray) jsonElement;
for (JsonElement element : jsonArray) {
    System.out.println(element.getAsJsonObject().get("name"));
}

这对我来说运行得很好,在输入了ntg发布的内容后,IntelliJ让我知道这是可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接