从JSON数组获取嵌套的JSON对象

时间:2015-04-27 07:33:00

标签: arrays json getjson

我可以知道如何从json数组获取JSON对象吗?

JSON:

[
    {
        "id": 1,
        "user": {
            "id": 20710,
            "username": "abc",
            "first_name": "",
            "last_name": "",
        },
        "action": {
            "name": "xxx",
            "date": 19/01/01,
        },
    },
    {
        "id": 2,
        "user": {
            "username": "xyx",
            "first_name": "xxx",
            "last_name": "yyy",
        },
        "action": {
            "name": "xxx",
            "date": 19/05/01,
        },

    },]

我想在列表中获取这些用户的用户名,但是当我从api获取这个json作为JSONArray时,我无法获得该值。

我的代码:

public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    Log.d("Create Response", response.toString());

                    ArrayList<String> list = new ArrayList<String>();
                    JSONArray jsonArray = response;
                    try {
                    if (jsonArray != null) {
                        int len = jsonArray.length();
                        for (int i=0;i<len;i++){
                            JSONObject c=response.getJSONObject(1);
                            String id = c.getString(i);

                            HashMap<String, String> map = new HashMap<String, String>();

                            map.put("id", id);
                                feeds_List.add(map);
                        }
                    }

我无法使用

JSONObject object=JsonArray.getJSONObject("user");

这里,

如果它是getJSONObject("user");

,它只接受JSONArray的int

1 个答案:

答案 0 :(得分:4)

您也可以这样使用。假设响应字符串是 userInfo

ArrayList<String> usernames = new ArrayList<String>();
JSONArray userList = new JSONArray(userInfo);
for (int j = 0; j < userList.length(); j++) {
  JSONObject userObject = new JSONObject(userList.getString(j));
  String user = userObject.getString("user");
  JSONObject usernameInfo = new JSONObject(user);
  usernames.add(usernameInfo.getString("username"));

}

试试这个,如果不行,请在评论中提及我。