我已经暴露了我的问题on Moshi GitHub。
简历:如何使用这些格式的自定义注释将json反序列化为具有2个相同类型但JSon格式不同的字段的类?
有了JakeWharton的提示,我已经成功获得了想要的结果。 我在这里分享它,供任何寻求解决方案的人使用。
在工厂的create方法中是否有更好的方法来查找注释?甚至是通过这种方法实现我的目标的更好方法?
这是(简化的)代码,没有适配器类,这很容易。
public class Data
{
@DateFormat("yyyy-MM-dd")
LocalDate date1;
@DateFormat("ddMMyyyy")
LocalDate date2;
}
@Retention(RetentionPolicy.RUNTIME)
@JsonQualifier
@interface DateFormat
{
String value();
}
public class DateFormatFactory implements JsonAdapter.Factory
{
@Override
public @Nullable JsonAdapter<?> create(Type type_p, Set<? extends Annotation> annotations_p, Moshi moshi_p)
{
if (annotations_p.isEmpty() || !type_p.getTypeName().equals(LocalDate.class.getName()))
{
return null;
}
for (Annotation annotation : annotations_p)
{
if (annotation instanceof DateFormat)
{
return new LocalDateAdapter(((DateFormat) annotation).value());
}
}
return null;
}
}
谢谢您的时间!