java - пример - gsonbuilder




Gson-считывание значения двумя разными ключами (3)

Вы можете аннотировать членов для принятия значений из двух разных имен json, используя аннотацию @SerializedName :

@SerializedName(value = "name", alternate = {"fullName"})
private String name;
@SerializedName(value = "city", alternate = {"address"})
private String city;

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

ОБНОВЛЕНО: @SerializedName альтернативные имена при десериализации добавлено в версии 2.4

В моем проекте Android у меня есть два типа ответа, где оба ответа идентичны, за исключением двух ключей .

Ответ 1

{"fullName":"William Sherlock Scott Holmes","address":"221B Baker Street, London, England, UK","downloads":642,"rating":3,"repos":["https://link1","https://link2","https://link3"]}

Ответ 2

{"name":"Sherlock","city":"London","downloads":642,"rating":3,"repos":["https://link1","https://link2","https://link3"]}

Если вы видите ответы, только два ключевых имени меняют полное имя / имя и адрес / город

Я не хочу создавать еще одно pojo для другого ответа. Теперь мой вопрос : возможно ли использовать только одно Pojo для чтения обоих ответов?

public class AccountInfo {
    private String name;
    private String city;
    //other objects

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
    //other setters and getters
}

Любая помощь будет оценена ...


Да, вы можете полностью использовать один класс POJO для десериализации обоих ответов. Ваш класс POJO будет содержать ключи от обоих ответов.

public class Response {


private String name;
private String city;
private String fullName;
private String address;
private Integer downloads;
private Integer rating;
private List<String> repos ;

}

Но при использовании класса Response соблюдайте осторожность, чтобы в первом ответе имя и город были нулевыми , а во втором - адрес и полное имя .


Определите все возможные поля в вашем классе POJO, как

    public class AccountInfo {
      private String name;
      private String city;
      private String fullname;
      private String address;
    }

Выполняя проверку работы на ноль в этих полях





android-gson