小编Luc*_*sta的帖子

Jackson 将 XML 与根序列化为抽象类

我有一个应用程序,我需要在根级别使用不同的标签序列化 XML。

我使用以下场景实现了一个测试用例,通过相同的输入我得到了两个 xml。

<ClassTypeA>
    <fieldA>a</fieldA>
</ClassTypeA>
Run Code Online (Sandbox Code Playgroud)

<ClassTypeB>
    <fieldB>b</fieldB>
</ClassTypeB>
Run Code Online (Sandbox Code Playgroud)

为了序列化,我实现了这三个类:

<ClassTypeA>
    <fieldA>a</fieldA>
</ClassTypeA>
Run Code Online (Sandbox Code Playgroud)

在下面使用此测试会返回以下错误:

<ClassTypeB>
    <fieldB>b</fieldB>
</ClassTypeB>
Run Code Online (Sandbox Code Playgroud)
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'fieldA' as a subtype of `br.com.eletra.filemode.uaa.converter.TestXml`: known type ids = [ClassTypeA, ClassTypeB]
 at [Source: (StringReader); line: 2, column: 2]
Run Code Online (Sandbox Code Playgroud)

但是,在结构的开头插入任何标签时,序列化是成功的。

在此处输入图片说明

我用演绎类型的jackson 2.12做了另一个测试。


@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({
        @JsonSubTypes.Type(value = TestConcreteDisconnectXML.class, name = "ClassTypeA"),
        @JsonSubTypes.Type(value = TestConcreteConnectXML.class, name = "ClassTypeB"),
})
abstract class TestXml{

}

@Getter
@Setter
class TestConcreteDisconnectXML extends TestXml{
    private String fieldA; …
Run Code Online (Sandbox Code Playgroud)

java spring-boot jackson-dataformat-xml

5
推荐指数
1
解决办法
169
查看次数

标签 统计

jackson-dataformat-xml ×1

java ×1

spring-boot ×1