如何解析 Json POST 请求 onResponse Stringrequest 数据
Posted
技术标签:
【中文标题】如何解析 Json POST 请求 onResponse Stringrequest 数据【英文标题】:How to parse Json POST request onResponse Stringrequest data 【发布时间】:2020-02-13 23:09:05 【问题描述】:我有一些 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"
]
]
【问题讨论】:
您尝试过吗,如果您没有尝试过,请您自己尝试,如果您在解析时发现任何问题,我们随时为您提供帮助,祝您好运。 显示调用 api 的函数。 public void parseData(String response) try JSONObject jsonObject = new JSONObject(response); if (jsonObject.getString("error_code").equals("0")) String dataArray = jsonObject.getString("message"); Toast.makeText(LoginActivity.this, dataArray, Toast.LENGTH_LONG).show(); Intent intent = new Intent(LoginActivity.this,category_selection.class);开始活动(意图); else Toast.makeText(LoginActivity.this,"无效登录",Toast.LENGTH_LONG).show(); catch (JSONException e) e.printStackTrace(); 不是这个兄弟,我说的改装电话..下面是您将得到答案的解决方案 @YogeshNikamPatil 兄弟我正在使用 Volley 库而不是改造 【参考方案1】:解决方案 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 创建模型类:
模型.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();
);
这会很好用。
【讨论】:
兄弟我正在使用 volley 库 好的显示Volley调用方法,我会更新我的答案 public void parseData(String response) try JSONObject jsonObject = new JSONObject(response); if (jsonObject.getString("error_code").equals("0")) String dataArray = jsonObject.getString("message"); Toast.makeText(LoginActivity.this, dataArray, Toast.LENGTH_LONG).show(); Intent intent = new Intent(LoginActivity.this,category_selection.class);开始活动(意图); else Toast.makeText(LoginActivity.this,"无效登录",Toast.LENGTH_LONG).show(); catch (JSONException e) e.printStackTrace(); 这就是我现在的调用方式。 public void onResponse(String response) // Toast.makeText(LoginActivity.this, response, Toast.LENGTH_LONG).show(); Log.v("tests11111t"+response,"tetstsststt");解析数据(响应); 不是这个兄弟...好吧试试这个: JSONObject jsonObject = new JSONObject(response); JSONObject myResponse = jsonObject.getJSONObject("result"); String mToken = (String) myResponse.getString("token"); System.out.println(mToken+"");【参考方案2】:您可以解析您的 json 响应,首先获取主 json 对象,然后获取第一个名为 result 的对象。
JSONObject jsonobject = new JSONObject(response);
JSONObject resultObject = jsonobject.getJSONObject("result");
String token = resultObject.getString("token");
【讨论】:
把你的方法发给我 提供您调用 api 的方法,以便我们为您提供帮助。以上是关于如何解析 Json POST 请求 onResponse Stringrequest 数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CherryPy 的 POST 请求中接收 JSON?
如何将 json 列表传递给 Flutter 中的 http 请求(post)正文?