如何解析响应Stringrequest数据上的Json POST请求

问题描述 投票:0回答:2

我有一些JSON响应,需要找到一种从数据中解析令牌的方法

{
  "status": true,
  "message": "Logged in successfully",
  "error_code": 0,
  "result": {
    "token": "eyJ0eXAiOiJBdXRoIiwiYWxnIjoiSFMyNTYifQ.eyJpYXQiOjE1NzEyODczNjEsImV4cCI6MTU3MTM3Mzg2MSwicGF5bG9hZCI6eyJ1c2VyX2lkIjoiMTAxIiwiY29tcGFueV9pZCI6IjEifX0.-BEWhUT762rkcdZCBG6gU8q52AhITUm_kPazh1Tsj78",
    "unique_id": "101",
    "first_name": "AAA",
    "last_name": "R",
    "user_groups_sites": [
      {
        "group_id": "6",
        "group_name": "Zonal Manager",
        "group_key": "zonal_manager",
        "sites": [
          {
            "site_id": "1",
            "site_name": "AAAA"
          }
        ]
      },
      {
        "group_id": "5",
        "group_name": "Auditor",
        "group_key": "auditor",
        "sites": [
          {
            "site_id": "1",
            "site_name": "AAAAA"
          }
        ]
      }
    ]
  }
}
android json android-studio post android-service
2个回答
0
投票

Sol 1:

JSONObject jsonObject = null;
try {
    jsonObject = new JSONObject(response);
    JSONObject myResponse = jsonObject.getJSONObject("result");
    String mToken = (String) myResponse.getString("token");
    Log.e("result", myResponse.toString());


    JSONArray userGroupsSites = myResponse.getJSONArray("user_groups_sites");

    for (int i = 0; i < userGroupsSites.length(); i++) {
        JSONObject sites = userGroupsSites.getJSONObject(i);
        Log.e("actor", sites.toString());

        JSONArray getSiteObject = sites.getJSONArray("sites");
        JSONObject siteValue = getSiteObject.getJSONObject(0);
        Log.e("siteValue", siteValue.toString());

        String getSiteId = (String) siteValue.getString("site_id");
        String getSiteName = (String) siteValue.getString("site_name");
        System.out.println("Site Id: " + getSiteId);
        System.out.println("Site Name: " + getSiteName);

    }


} catch (JSONException e) {
    e.printStackTrace();
}

Sol:2创建模型类:

Model.java

public class Model {
    private boolean status;
    private String message;
    ResultData result;

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public ResultData getResult() {
        return result;
    }

    public void setResult(ResultData result) {
        this.result = result;
    }

    public class ResultData {

        private String token;

        public String getToken() {
            return token;
        }

        public void setToken(String token) {
            this.token = token;
        }
    }
}

API调用应为:

call.enqueue(new Callback<Model>() {
    @Override
    public void onResponse(@NonNull Call<Model> call, @NonNull Response<Model> response) {
        System.out.println(response.body().getResult().getToken());
    }

    @Override
    public void onFailure(@NonNull Call<Model> call, @NonNull Throwable t) {
        t.printStackTrace();
    }
});

这会很好。


0
投票

您可以通过执行以下操作来解析您的json响应,首先获取主要的json对象,然后获取第一个名为result的对象。

JSONObject jsonobject = new JSONObject(response);
JSONObject resultObject = jsonobject.getJSONObject("result");

String token = resultObject.getString("token");
© www.soinside.com 2019 - 2024. All rights reserved.