JsonOjbect Arraylist в java с орг. json - PullRequest
0 голосов
/ 11 апреля 2020

Служба отдыха, которую я потребляю, возвращает объект 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, чтобы можно было обращаться с ней как с общим массивом и воздействовать на каждый ряд.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Если у вас есть 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
0 голосов
/ 11 апреля 2020

Попробуйте библиотеку Gson для преобразования json в java объект, он должен работать легко. Удачи https://github.com/google/gson

...