Как автоматически десериализовать атрибуты json-root для объекта в Retrofit? - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь отобразить корень моего json-ответа на объект Java.Это список атрибутов.

Обычно это легко сделать с помощью @SerializedName, но в моем случае я не могу сослаться на мой объект "Person", поскольку мой ответ json выглядит следующим образом:

{
    "name": "Peter",
    "height": 10,
    "id": 2,
    "is_default": true
}

Я знаю, что мог бы вручную получить каждый атрибут с помощью @SerializedName, а затем создать свой собственный объект, подобный этому:

public class PersonResponse {

    @SerializedName("name")
    String name;

    @SerializedName("height")
    int height;

    @SerializedName("id")
    int id;

    @SerializedName("is_default")
    boolean is_default;

    public Person getPerson() {
        return new Person(name, height,id,is_default);
    }
}

Но есть ли другой способ, где я могу сделать это автоматически?

РЕДАКТИРОВАТЬ для уточнения:

Если бы у меня был следующий JSON:

{
  "person": {
    "name": "Peter",
    "height": 10,
    "id": 2,
    "is_default": true
  }
}

Я мог бы просто сделать следующее в своем ответе:

@SerializedName("person")
Person person;

И он автоматически сопоставит все корневые атрибуты с полями в моем классе Person.Однако, поскольку корнем моего JSON является не объект Person, а просто атрибуты человека, как я могу сказать это для модернизации?

...