解析没有索引的平面JSON数组

时间:2014-07-28 06:10:41

标签: java android json

我正在摸索着弄清楚如何解析以下JSON对象。

[
    {
        "result": true,
        "response": "Successfully got list of users in radius of 10km"
    },
    {
        "username": "elize",
        "photo": "http://www.embedonix.com/apps/mhealth/images/elize/elize.png"
    },
    {
        "username": "mario",
        "photo": "http://www.embedonix.com/apps/mhealth/images/mario/mario.png"
    }
]

这是我猜的单个索引json数组。第一部分说明构建json对象的操作没问题。

然后有一对usernamephoto,我必须解析它们并将它们放在一个列表中:

public class User {

    private String mName;
    private String mPhotoURl;

    public User(String name, String url)
    {
       ///
    }
}

因此,如果json的第一个条目是result -> true,我应该有一个ArrayList<User>

我尝试执行以下操作,但它总是引发JSONParse异常:

    try {
        JSONObject json = new JSONObject(data);
        int length = json.length();

        for (int i = 0; i < length; i++) {
            JSONArray obj = json.getJSONArray(String.valueOf(i));
            Log.i(TAG, i + " username: " + obj.getString(i));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:0)

试试这种方式

 try {
            JSONArray jsonArray = new JSONArray(data);
            int length = jsonArray.length();

            for (int i = 1; i < length; i++) {
                JSONObject obj = jsonArray.getJSONObject(i);
                Log.i(TAG, i + " username: " + obj.getString("username"));
                Log.i(TAG, i + " photo: " + obj.getString("photo"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

        try {
            JSONArray jsonArray = new JSONArray(data);

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject obj = jsonArray.getJSONObject(i);
                if(i==0){
                    Log.i(TAG, i + " result: " + obj.getString("result"));
                    Log.i(TAG, i + " response: " + obj.getString("response"));
                }else{
                    Log.i(TAG, i + " username: " + obj.getString("username"));
                    Log.i(TAG, i + " photo: " + obj.getString("photo"));
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

答案 2 :(得分:0)

尝试代码...类似这样......

          try {
                JSONArray json = new JSONArray(data);
                int length = json.length();

                for (int i = 0; i < length; i++) {



                    JSONObject childObject = json.getJSONObject(i);
                    if(i==0){

                        String result = child.getBoolean("result");
                        String resp = child.getString("response");

                    } else {

                    String username = child.getString("username");
                    String photo = child.getString("photo");
                    Log.i(TAG, i + " username: " + username);
                    }

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }