使用`AutoVaule`和`AutoGson`时不会反序列化@@ SerializedName`。

时间:2018-09-28 13:40:15

标签: android json-deserialization auto-value gson

我正在使用readlink -f "$SOURCEDIR/.." AutoValue,但是在AutoGson无法正常工作时遇到了问题。

我有这个模型:

@SerializedName

我正在注册@AutoValue @AutoGson(autoClass = AutoValue_ItemResponse.class) public abstract class ItemResponse { public static ItemResponse create(final String stat) { return new AutoValue_ItemResponse(stat); } // public static TypeAdapter<ItemResponse> typeAdapter(Gson gson) { // return new AutoValue_ItemResponse.GsonTypeAdapter(gson); // } @SerializedName("status") public abstract String stat(); }

TypeAdapterFactory

使用上述方法,@SuppressWarnings("unchecked") public class CustomTypeAdapterFactory implements TypeAdapterFactory { @Override public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { Class<T> rawType = (Class<T>) type.getRawType(); AutoGson annotation = rawType.getAnnotation(AutoGson.class); if (annotation == null) { return null; } return (TypeAdapter<T>) gson.getAdapter(annotation.autoClass()); } } 的值始终为stat

现在,如果我取消注释null中的代码,即ItemResponse,而是将波纹管注册为TypeAdapter

TypeAdapterFactory

@GsonTypeAdapterFactory public abstract class SampleAdapterFactory implements TypeAdapterFactory { public static SampleAdapterFactory create() { return new AutoValueGson_SampleAdapterFactory(); } } 返回正确的值。

有人知道为什么第一种方法没有对stat进行反序列化吗? 谢谢。

0 个答案:

没有答案