`@SerializedName` не десериализовано при использовании`AutoVaule` и `AutoGson`
Я использую 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
возвращает правильное значение.
Любая идея, почему первый подход не десериализации stat
? Благодарю.