Как я могу показать список объектов с динамическими ключами, используя retrofit2, GSON, POJO? - PullRequest
0 голосов
/ 08 июня 2018
{
  "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 цифровой ключ внутри объекта «данные» является динамическим.Итак, как мне сделать pojo для этого json, потому что он может варьироваться при следующем ответе. Так как я могу показать в listview. Я использую retrofit2, в котором мы должны вызвать userDTO, в котором мы должны определить все модели, так какя так в списке.

1 Ответ

0 голосов
/ 08 июня 2018

Это работает для меня, вы также можете попробовать это.

Вы можете получить динамические ключи Json Object, используя

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;
            }
        };
    }

И создайте для вас pojo для Id, isModerator и для Name и задайте для этого значения из вашего loop.

Дайте мне знать, если это работает для вас или для любой другой проблемы в этом.

...