java 和 org.json 中的 JsonObject 到 Arraylist

JsonOjbect to Arraylist in java with org.json

我使用的其余服务 returns 一个 json 对象,当我像这样打印出来时:

{"result":
[[[12,"01",1,"Fallo de corriente",0,1,"Bombeo Regatillo(Sax)"],
[12,"01",2,"Nivel máximo",0,0,"Bombeo Regatillo(Sax)"],[12,"01",3,"Nivel mínimo",0,0,"Bombeo "], 
[12,"01",6,"Exceso de caudal",0,0,"Bombeo Regatillo(Sax)"],
[12,"01",7,"Defecto de caudal",0,0,"Bombeo Regatillo(Sax)"],
[12,"02",3,"Defecto de batería",0,0,"Embalse Cabeza Pelada(Sax)"]]]}

我的问题是我想将它转换成一个列表,并能够以 Arraylist 由每一行组成的方式一个一个地访问它们,我可以一个一个地处理它们。

如何将此 JsonObect 传递给 Arraylist?

    Response response = invocationBuilder.get();
    String output = response.readEntity(String.class);

    System.out.println(response.toString());
    JSONObject bomb = new JSONObject(output);

    return bomb;

更准确地说,如何将我的 JsonObject "bomb" 转换为能够将其视为普通数组列表并作用于每一行。

尝试 Gson 库将 json 转换为 java 对象,它应该很容易工作。祝你好运 https://github.com/google/gson

将 JSON 作为字符串后,您可以使用 org.json 库创建地图:

// assume jsonString contains a string representation of your JSON:
JSONObject jsonObject = new JSONObject(jsonString);
Map<String, Object> map = jsonObject.toMap();

这将创建一个 Java 键值为 "result" 的映射,以及一个表示每条记录的嵌套数组列表(即 JSON 数组)。

然后您可以迭代结果。因为数据的结构是数组的数组,所以需要向下钻取才能得到数据。

这是一种方法:

// get the value from the map we created:
ArrayList<Object> myList = (ArrayList) map.get("result");

// just so my console can handle accents:
PrintStream out = new PrintStream(System.out, true, UTF_8);

for (Object item : myList) {
    for (Object rec : (ArrayList) item) {
        ArrayList<Object> record = (ArrayList) rec;
        int item3 = (int) record.get(2);
        String item4 = (String) record.get(3);
        out.println(item3 + " - " + item4);
    }
}

这将打印出以下内容:

1 - Fallo de corriente
2 - Nivel máximo
3 - Nivel mínimo
6 - Exceso de caudal
7 - Defecto de caudal
3 - Defecto de batería