Moshi JsonAdapter.Factory:字段类型相同,但Json中的字符串格式不同

时间:2018-07-16 20:38:12

标签: java json moshi

我已经暴露了我的问题on Moshi GitHub

简历:如何使用这些格式的自定义注释将json反序列化为具有2个相同类型但JSon格式不同的字段的类?

有了JakeWharton的提示,我已经成功获得了想要的结果。 我在这里分享它,供任何寻求解决方案的人使用。

在工厂的create方法中是否有更好的方法来查找注释?甚至是通过这种方法实现我的目标的更好方法?

这是(简化的)代码,没有适配器类,这很容易。

Json的示例Java类

public class Data
{
    @DateFormat("yyyy-MM-dd")
    LocalDate date1;
    @DateFormat("ddMMyyyy")
    LocalDate date2;
}

DateFormat批注

@Retention(RetentionPolicy.RUNTIME)
@JsonQualifier
@interface DateFormat
{
    String value();
}

基于DateFormat注释的LocalDate的JsonAdapter.Factory

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;
    }
}

谢谢您的时间!

0 个答案:

没有答案