@JsonSubTypes和@JsonTypeInfo的编程方式

时间:2018-05-01 12:04:21

标签: java jackson jackson-databind jackson-modules

我有以下课程,它按预期工作:

class TestClass
{
    @Inject
    public TestClass(
            String type,
            @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXTERNAL_PROPERTY)
            @JsonSubTypes(value = {
                    @JsonSubTypes.Type(value = String.class, name = "expression"),
                    @JsonSubTypes.Type(value = List.class, name = "simple")
            })
            Object value)
    {
    }
}

问题是我需要使用枚举来映射值,所以我做了以下内容:

class TestClass
{
    @Inject
    public TestClass(
            String type,
            @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXTERNAL_PROPERTY)
            @JsonSubTypes(value = {
                    @JsonSubTypes.Type(value = String.class, name = MyEnum.EXPRESSION),
                    @JsonSubTypes.Type(value = List.class, name = MyEnum.SIMPLE)
            })
            Object value)
    {
    }
}

它不起作用,因为MyEnum不是String,并且注释值必须是常量,所以我不能动态地枚举。理想情况下,我会将type字段的值解析为MyEnum,并根据类型的值映射子类型。

0 个答案:

没有答案