Невозможно десериализовать альтернативное имя с помощью GSON, AutoValue и Retrofit 2.

Я использую модифицированную версию 2.1.0 для десериализации JSON в pojos. Поле в pojo может быть получено под разными именами в json. Чтобы правильно десериализовать поле, я использовал аннотацию @serializedName следующим образом:

@AutoValue
public abstract class Media implements Parcelable {

    @SerializedName(value = "title", alternate = {"name"})
    public abstract String title();

// More fields and code

Однако по какой-то причине, когда в результирующем JSON есть поле под ключом «название», Gson читает его правильно, но когда поле связано с ключом «имя», оно не читается.

Как я могу заставить GSON распознавать альтернативное имя во время десериализации?


person Javier Ventajas Hernández    schedule 06.08.2016    source источник


Ответы (2)


Я предполагаю, что вы используете плагин com.ryanharter.auto.value:auto-value-gson. Поддержка альтернативных сериализованных имен не была добавлена до версии 0.4. .0. Обновите до com.ryanharter.auto.value:auto-value-gson:0.4.2, и тогда вы сможете десериализовать альтернативные имена.

person heenenee    schedule 11.08.2016

Кажется, проблема связана с Parcel. Вы можете взглянуть на этот parceler

@AutoValue
@Parcel
public abstract class Media {
    @ParcelProperty("title") public abstract String title();

}
person THANN Phearum    schedule 11.08.2016