Разобрать ответ JSON

Я пытаюсь сформулировать приведенный ниже ответ json и получить данные «message» и «WORKORDERID» в java

{
    "operation": {
        "result": {
            "message": " successfully.",
            "status": "Success"
        },
        "Details": {
            "SUBJECT": "qqq",
            "WORKORDERID": "800841"
        }
    }
}

Ниже мой код

JSONObject inputs = new JSONObject(jsonResponse);
JSONObject jsonobject = (JSONObject) inputs.get("operation");
String s = jsonobject.getString("message");
system.out.println("s");

вы печатаете String "s" вместо переменной s

Sharon Ben Asher 29.05.2018 13:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
92
3

Ответы 3

Ваши объекты вложены 2 раза, поэтому вам следует сделать:

JSONObject inputs = new JSONObject(jsonResponse);

JSONObject operation= (JSONObject) inputs.get("operation");
JSONObject result= (JSONObject) operation.get("result");
JSONObject details= (JSONObject) operation.get("Details");
String message = result.getString("message");
String workerId = details.getString("WORKORDERID");

Если ответ решил вашу проблему, приятно, если вы его примете. :)

AndrejH 29.05.2018 14:04

JSONObject чем-то похож на Map-Wrapper, поэтому вы можете думать, что ваша структура данных JSON - это Map<Map<Map<String, Object>, Object>, Object>. Итак, во-первых, вам нужно получить доступ к данным по первому ключу (операции), во-вторых (результат), а после этого вы можете получить доступ к желаемому полю (сообщению).

Обратите внимание, что значением Map является Object, поэтому вам нужно будет привести свой тип к JSONObject.

иногда класс JSONObject не встречается в java. поэтому вам нужно будет добавить банка

try{
   // build the json object as follows
   JSONObject jo = new JSONObject(jsonString);
   // get operation as json object
   JSONObject operation= (JSONObject) jo.get("operation");
   // get result as json object
   JSONObject result= (JSONObject) jo.get("result");
   JSONObject details= (JSONObject) jo.get("Details");
   // get string from the json object
   String message = jo.getString("message");
   String workerId = jo.getString("WORKORDERID");
}catch(JSONException e){
   System.out.println(e.getMessage());
}

Другие вопросы по теме