java - Volley JSONObjectRequest 和 JSONArrayRequest 都给出错误 Android Java
问题描述
我正在尝试解析 JSON 数据,如下所示:
{"Returnresult":[{"api_status":"1","user_temp_id":"280","otp":"1234"}]}
我按照Android Developer网站上给出的教程进行了尝试
String url = "some url";
RequestQueue queue = Volley.newRequestQueue(this);
JsonArrayRequest jsonArrayRequest;
jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
response -> {
String api_status = null;
try {
JSONArray obj = response.getJSONArray(0);
api_status = obj.getString(0);
System.out.println(" api_status is" + api_status);
if (api_status.equals("1")) {
//some code
}
我被困在
JSONArray obj = response.getJSONArray(0); // Tried as array this time
如果我尝试将其作为 JSONArray 获取,则当我尝试时,错误显示“....of type org.json.JSONObject cannot be convert to JSONArray”:
JSONObject obj = response.getJSONObject(0);
如果我尝试将其作为 JSONObject 获取,则错误显示“....类型 org.json.JSONArray 无法转换为 JSONObject”,JSONObjectRequest 位于顶部
请帮忙 !
根据 Dharmender 编辑的代码:
RequestQueue requestQueue = Volley.newRequestQueue(trial1.this);
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
response -> {
System.out.println(response.toString());
try {
JSONObject json = new JSONObject(response.toString());
JSONArray returnresult = json.getJSONArray("Returnresult");
for(int countItem = 0;countItem<returnresult.length();countItem++){
JSONObject returnObject = returnresult.getJSONObject(countItem);
String apiStatus=returnObject.isNull("api_status")?"":returnObject.optString("api_status");
System.out.println("Status is "+apiStatus);
}
} catch (JSONException e) {
e.printStackTrace();
}
解决方案
尝试使用以下代码。
RequestQueue requestQueue = Volley.newRequestQueue(trial1.this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, url, null,
response -> {
System.out.println(response.toString());
try {
JSONObject json = new JSONObject(response.toString());
JSONArray returnresult = json.getJSONArray("Returnresult");
for(int countItem = 0;countItem<returnresult.length();countItem++){
JSONObject returnObject = returnresult.getJSONObject(countItem);
String apiStatus=returnObject.isNull("api_status")?"":returnObject.optString("api_status");
System.out.println("Status is "+apiStatus);
}
} catch (JSONException e) {
e.printStackTrace();
}
推荐阅读
- python - 为什么我在下面的代码中得到 float not iterable
- angular - 如何初始化搜索调用?
- c# - [已修复]Xamarin camera2 api 在后台无法正常工作
- python - 从源代码构建的 Python 找不到 UTF-32-BE 编码
- python - 计算变量增加的速度(python)
- javascript - Flask:如何更改render_template中传递的值
- python - 在 Python 中重新编码变量,类似于 R ifelse
- javascript - 如何在 javascript 中使用正则表达式从另一个字符串中获取特定字符串
- javascript - React Native FlatList 组件没有渲染我的数组
- javascript - 使用 Fetch 流式传输音频