我有一个JSON可以检索数据库的所有用户。为简化起见,我将展示前两个用户:
[
{
"id":"1",
"name":"Peter",
"age":"25"
},
{
"id":"2",
"name":"Andrew",
"age":"32"
},
...
]
正如您所看到的,它是一个没有名称的数组,其中包含一些JSONObjects
,因此我尝试从Android
检索这些数据,Volley
库通过整个数组但没有成功。
这是我目前的代码:
RequestQueue queue = Volley.newRequestQueue(getContext());
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try{
if (response != null) {
for(int i = 0; i < response.length(); i++){
JSONObject obj = response.getJSONObject(i);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("LOG", error.toString());
}
});
queue.add(jsonArrayRequest);
它总是给我以下错误:
未处理的异常:org.json.JSONException
在尝试检索JSONArray
之前,我还尝试检索JSONObject
,但由于方法
JSONArray json = response.getJSONArray(0);
也向我提出了我之前指出的同样错误。
我找了很多例子,我看不出我的问题在哪里。
我做错了什么?
提前致谢!
答案 0 :(得分:1)
您没有处理JSONException。
试一试。
StringRequest request = new StringRequest(Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response)
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jo = jsonArray.getJSONObject(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 1 :(得分:1)
无法解析构造函数“
JsonArrayRequest(int, java.lang.String, anonymous com.android.volley.Response.Listener<org.json.JSONArray>, anonymous com.android.volley.Response.ErrorListener)
”
错误不是谎言。该请求不接受Method类型。
JsonArrayRequest(
String url,
Response.Listener<JSONArray> listener,
Response.ErrorListener errorListener)
另一方面, StringRequest
确实如此。
StringRequest(
int method,
String url,
Response.Listener<String> listener,
Response.ErrorListener errorListener)
关于,
未处理的异常:org.json.JSONException
response.getJSONObject
将抛出该异常,因此您必须使用try-catch。
if (response != null) {
try {
for (int i = 0; ...) {
JSONObject jo = response.getJSONObject(i);
// use 'jo'
}
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 2 :(得分:0)
您应该在final JsonArrayRequest中添加final 祝你好运!
最终JsonArrayRequest jsonArrayRequest =新的JsonArrayRequest(Request.Method.GET,URL,空,新的Response.Listener(){
@Override
公共无效onResponse(JSONArray response){
尝试{
if(response!= null){
for(int i = 0; i mQueue.add(jsonArrayRequest);