Я пытаюсь сформулировать приведенный ниже ответ 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");




Ваши объекты вложены 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");
Если ответ решил вашу проблему, приятно, если вы его примете. :)
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());
}
вы печатаете String
"s"вместо переменнойs