无法使用 GSON、AutoValue 和 Retrofit 2 反序列化备用名称

Unable to deserialize alternate name with GSON, AutoValue, and Retrofit 2

我正在使用改造版本 2.1.0 将 JSON 反序列化为 pojo。可以在 json 中以不同名称接收 pojo 中的字段。为了正确反序列化该字段,我按以下方式使用了@serializedName 注释:

@AutoValue
public abstract class Media implements Parcelable {

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

// More fields and code

但是,由于某些原因,当得到的JSON有键"title"下的字段时,Gson读取正确,但是当该字段与"name"键关联时, 它不会被读取。

如何让 GSON 在反序列化过程中识别备用名称?

我假设您使用的是 com.ryanharter.auto.value:auto-value-gson 插件。直到版本 0.4.0 才 added 支持备用序列化名称。更新到 com.ryanharter.auto.value:auto-value-gson:0.4.2 然后您应该能够反序列化备用名称。

看来问题与包裹有关。 你可能想看看这个 parceler

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

}