我正在尝试解析Volley的JSON响应。
我的“响应”参数是:
{"result":["{\"success\":\"false\"}"]}
我收到了错误:JSONObject jo=ja.getJSONObject(0); //Error here
我做错了什么?
public void onResponse(JSONObject response) {
try {
JSONArray ja = response.getJSONArray("result");
JSONObject jo=ja.getJSONObject(0); //Error here
String rst=jo.getString("success");
if (rst.equals("true")) {
///do something
} else{
///do something
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
更改此
JSONArray ja = response.getJSONArray("result");
JSONObject jo=ja.getJSONObject(0);
到这个
JSONObject jo = new JSONObject(response)
JSONArray ja=j0.getJSONArray("result");
你必须首先从响应中创建json对象..然后从JsonObject获取jsonarray ......
答案 1 :(得分:0)
问题是,你的json数组包含的字符串不是JSONObject
。在您的JSON {"result":["{\"success\":\"false\"}"]}
中,元素"{\"success\":\"false\"}"
是字符串,表示您的JSONArray
包含Strings
而不是JSONObject
。因此,您需要将元素解析为String
,然后将其解析为JSONObject
。
您可以将代码编写为
JSONArray ja = jb.getJSONArray("result");
for(int i=0; i<ja.length(); i++) {
String stringElement = ja.getString(i);
// Then you can parse it with JSONObject
JSONObject resultObject = new JSONObject(stringElement);
}
仅供参考,您期望的JSON是{"result":[{"success":"false"}]}