从Volley解析简单的json响应

时间:2015-08-05 14:11:39

标签: android json parsing android-volley

我正在尝试解析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();
                }

2 个答案:

答案 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"}]}