/ / Impossibile deserializzare il nome alternativo con GSON, AutoValue e Retrofit 2: java, gson, retrofit2, android-gson, valore automatico

Impossibile deserializzare il nome alternativo con GSON, AutoValue e Retrofit 2: java, gson, retrofit2, android-gson, valore automatico

Sto usando la versione 2.1 del retrofit.0 per deserializzare JSON in pojos. Un campo nel pojo può essere ricevuto con diversi nomi in the json. Per deserializzare correttamente il campo, ho usato l'annotazione @serializedName nel modo seguente:

@AutoValue
public abstract class Media implements Parcelable {

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

// More fields and code

Tuttavia, per qualche ragione, quando il JSON risultante ha il campo sotto la chiave "title", Gson lo legge correttamente, ma quando il campo è associato alla chiave "name", non viene letto.

Come posso ottenere che GSON riconosca il nome alternativo durante la deserializzazione?

risposte:

1 per risposta № 1

Suppongo che tu stia usando il com.ryanharter.auto.value:auto-value-gson collegare. Il supporto per i nomi serializzati alternativi non lo era aggiunto fino alla versione 0.4.0. Aggiornamento a com.ryanharter.auto.value:auto-value-gson:0.4.2 e dovresti quindi essere in grado di deserializzare i nomi alternativi.


-1 per risposta № 2

Sembra che il problema sia legato a Parcel. Potresti dare un'occhiata a questo parceler

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

}