我如何使用 retrofit2 、GSON、POJO 显示带有动态键的对象列表视图?


{
"res": true,
"data": {
"5a869f0561f6c232bc9d23db": {
"Id": "5a869f0561f6c232bc9d23dd",
"isModerator": false,
"Name": "AAA",
},
"5a869f5a61f6c232bc9d23df": {
"Id": "5a869f0561f6c232bc9d23dd",
"isModerator": false,
"Name": "BBB",
},
"5a869be761f6c232bc9d23ca": {
"Id": "5a869f0561f6c232bc9d23dd",
"isModerator": false,
"Name": "CCC",
},
"5a86a7358bd74b265621d710": {
"Id": "5a869f0561f6c232bc9d23dd",
"isModerator": false,
"Name": "DDD",
}
.....
.....
},
"logo": "",
"dateFormat": "f3",
"globalValidation": {
"rejectRequest": "Request declined.",
"acceptRequest": "Request accepted. Please login again to be able to access the new Circle."
}
}

在上面的 json 中,"data" 对象中的数字键是动态的。那么我如何为这个 json 制作一个 pojo,因为它可能会在下一个响应中有所不同,所以我如何在 listview 中显示.我正在使用 retrofit2,其中我们必须调用 userDTO,我们必须在其中定义所有模型,所以我如何在列表中这样做。

它对我有用,你也可以试试这个。

你可以获取你的 Json 对象动态键 通过使用这个

try {
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getBoolean("res") == true) {
JSONObject jsonObject1 = jsonObject.getJSONObject("data");
for (String key : iterate(jsonObject1.keys())) {
Log.e("In Loop", key);

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

方法如下:

private <T> Iterable<T> iterate(final Iterator<T> i) {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return i;
}
};
}

并为Id, isModeratorName创建您的pojo 并从您的loop中设置值.

让我知道它是否适合您或其中的任何其他问题。

最新更新