如何用多个对象解析这个json

jvlzgdj9  于 2021-07-03  发布在  Java
关注(0)|答案(4)|浏览(265)

devs我被困在解析这种json中,我不知道如何获得状态和消息的值,任何帮助都将是非常可观的。我得到error的值,但是当我想访问status和message的值时,它抛出一个error json格式:

{
    "error": {
        "status": 400,
        "message": "Wrong number of segments"
    }
}

我解析json的代码:

try {
                    JSONObject jso = new JSONObject(String.valueOf(response));

                    //jso.getJSONObject("error").getJSONObject("message");
                   jso.getJSONObject("error");
                   jso.getJSONObject("status").toString(200);
                    Log.d(TAG,"jso1"+jso);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
0tdrvxhp

0tdrvxhp1#

try {
                JSONObject jso = new JSONObject(String.valueOf(response));

                //jso.getJSONObject("error").getString("message");
               jso.getJSONObject("error");
               jso.getJSONObject("error").getInt("status"); // if it was string use getString or it was int than use value getInt
                Log.d(TAG,"jso1"+jso);
            } catch (JSONException e) {
                e.printStackTrace();
            }
qq24tv8q

qq24tv8q2#

JSONParser parser = new JSONParser();
JSONObject jso = (JSONObject) parser.parse(String.valueOf(response));

上面的命令将以json的形式给出响应。
要获取状态和消息,需要将错误提取为单独的jsonobject,然后解析状态和消息

JSONObject errorObj = (JSONObject) jso.get("error");
String message = errorObj.get("message").toString();
int status = Integer.parseInt(errorObj.get("status").toString());

记住使用层次结构进行分析和检索。。因此,如果状态消息在“error”中,那么将error提取为jsonobject,然后检索子键。作为一个好的实践,检查密钥是否存在或者not:-

if(errorObj.has("")) {
// do something
}

添加工作示例:-

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; 
private static void parseJsonTest() {
            String json = "{\n" +
                    "    \"error\": {\n" +
                    "        \"status\": 400,\n" +
                    "        \"message\": \"Wrong number of segments\"\n" +
                    "    }\n" +
                    "}";
            try {
                JSONParser parser = new JSONParser();

                JSONObject jso = (JSONObject) parser.parse(json);

                JSONObject errorObj = (JSONObject) jso.get("error");
                String message = errorObj.get("message").toString();
                int status = Integer.parseInt(errorObj.get("status").toString());

                System.out.println(message + " >>>>>>> " + status);
            } catch (Exception e) {

            }
        }

输出:-

Wrong number of segments >>>>>>> 400
7xzttuei

7xzttuei3#

将json转换为java的最佳方法是使用诸如gson之类的转换器库检查以下链接:
https://github.com/google/gson

lrl1mhuk

lrl1mhuk4#

试试这个

try {
                    JSONObject fullResponse = new SONObject(String.valueOf(response));
                    JSONObject errorData = fullResponse.getJSONObject("error");
                    String errorCode = errorData.getObject("status");
                    String errorMessage = errorData.getString("message");                  
                    Log.d(TAG,"Result = "+errorCode +" - "+errorMessage );
                } catch (JSONException e) {
                    e.printStackTrace();
                }

相关问题