Java 工厂:相同类型的字段,但Json中的字符串格式不同
我已经暴露了我的问题 Resume:如何使用自定义注释将json反序列化为具有两个相同类型但不同json格式的字段的类 在杰克·沃顿的暗示下,我成功地获得了想要的结果。 我在这里分享它,给任何寻求解决方案的人 是否有更好的方法在工厂的create方法中查找注释?或者用这种方法实现我的目标的更好的方法 这里是(简化的)代码,没有适配器类,这是最简单的部分 Json的示例Java类 DateFormat注释 基于LocalDate的DateFormat注释的JsonAdapter.FactoryJava 工厂:相同类型的字段,但Json中的字符串格式不同,java,json,moshi,Java,Json,Moshi,我已经暴露了我的问题 Resume:如何使用自定义注释将json反序列化为具有两个相同类型但不同json格式的字段的类 在杰克·沃顿的暗示下,我成功地获得了想要的结果。 我在这里分享它,给任何寻求解决方案的人 是否有更好的方法在工厂的create方法中查找注释?或者用这种方法实现我的目标的更好的方法 这里是(简化的)代码,没有适配器类,这是最简单的部分 Json的示例Java类 DateFormat注释 基于LocalDate的DateFormat注释的JsonAdapter.Factory 公
公共类DateFormatFactory实现JsonAdapter.Factory
{
@凌驾
public@Nullable JsonAdapter create(Type Type_p,Setseems好的。你可以做Types.getRawType(Type_p)!=LocalDate.class
,顺便说一句。是的,你是对的,我的方法很笨拙……谢谢!
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;
}
}