Разобрать ответ JSON - PullRequest
0 голосов
/ 29 мая 2018

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

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

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

Обратите внимание, что значение MapObject, поэтому вам нужно будет привести тип к JSONObject.

0 голосов
/ 29 мая 2018

иногда класс JSONObject не найден в Java.поэтому вам нужно будет добавить jar

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());
}
0 голосов
/ 29 мая 2018

Ваши объекты вложены 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");
...