在jsonObject

时间:2018-04-20 14:03:00

标签: java android arrays android-recyclerview

我以这种方式得到了服务器的回复:

{
"ownerName": "theName",
"site": "theSite",
"group": "theGroup",
"honours": [
 {
    "id": 189,
    "name": "Assistant Professor"
}, {
    "id": 226,
    "name": "of the Four Winds"
}, {
    "id": 227,
    "name": " Defender of a Shattered World"
}, {
    "id": 228,
    "name": "Dragonslayer %s"
}, {
    "id": 229,
    "name": " Blackwing's Bane"
}, {
    "id": 278,
    "name": "Firelord %s"
}, {
    "id": 342,
    "name": " Storm's End"
}, {
    "id": 477,
    "name": "Fabulous",
    "selected": true
}]
}

我想访问该列表并设置TextView#setText以在ownerName列表中包含namehonours。在使用POJO模型循环和解析RecyclerView.Adapter#onBindVewHolder响应后,我以这种方式使用json

    @Override
public void onBindViewHolder(CharacterTitlesAdapter.CharacterTitlesViewHolder holder, int position) {

    CharacterTitleModel item = characterTitleModels.get(position);

    holder.itemView.setTag(item);

    Log.d("Titles size: ", String.valueOf(item.getTitles().size()));

    for(int i = 0; i < item.getTitles().size(); i++){

    TitleModel lt = item.getTitles().get(i);

    holder.titleName.setText(lt.getName().replace("%", item.getCharacterName() + "'"));

    }

当我如上所述遍历列表时,我只获得列表中的最后一项。如果我使用int position我得到列表中的第一项。

如何访问JSON响应列表中的 ALL 项目。

P.S。:我知道我主要只能解析honours json数组,但我需要ownerName

感谢每一位帮助。

2 个答案:

答案 0 :(得分:1)

如果您知道如何获得荣誉JSON数组,那么您也应该能够提取ownerName。

你想做类似下面的事情:

JSONObject root = new JSONObject(yourJSONString);
String ownerName = root.getString("ownerName");
JSONArray honoursArray = root.getJSONArray("honours");

然后从honoursArray中获取所需内容

答案 1 :(得分:0)

要访问ownerName,请使用HashMap,使用put方法插入ownerNamesite等的值。然后使用{{ 1}}到ArrayList addAll数组。在下面的示例中,honours已经声明:

hashMap

然后在 ResponseModel responseModel = gson.fromJson(theJsonResponse, ResponseModel.class); hashMap.clear(); hashMap.put("response", responseModel); 中使用RecyclerView.onBindViewHolder获取值:

hashMap.get(Object key)

我希望这有助于某人。