jaxb 解码器 : repeated xmlelement without wrapper

标签 jaxb jackson

<a>
    <b1>b1</b1>
    <b2>b2</b2>
    <b3>
        <c1></c1>
        <c2></c2>
    </b3>
    <b3>
        <c1></c1>
        <c2></c2>
    </b3>
    <b3>
        <c1></c1>
        <c2></c2>
    </b3>
</a>

由于所有<b3>不包含在包装元素中,比如 <b3s>当我使用 jackson 时 XmlMapper要将 XML 文件读取到我的 POJO Java Bean 类,我遇到了异常
com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.xxxxx] from String value; no single-String constructor/factory method (through reference chain: com.xxxx["xxx"]->com.xxx["xxx"])

我应该使用什么注释?

@XmlElement
public List<B3> b3;

最佳答案

如果要使用“解包”表示,则需要使用 Jackson 2.1,并指明解包选项:

@JacksonXmlElementWrapper(useWrapping=false)

或者,如果使用 JAXB 注释,则默认不应使用包装。

最后,您还可以更改默认值不使用包装元素,使用:
JacksonXmlModule module = new JacksonXmlModule();
// to default to using "unwrapped" Lists:
module.setDefaultUseWrapper(false);
XmlMapper xmlMapper = new XmlMapper(module);

关于jaxb 解码器 : repeated xmlelement without wrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097559/

相关文章:

jaxb - Moxy 正在编码未映射的 java 属性

java - Jackson JSON API反序列化流无法识别的字段

java - 如何在将 JSON 解析为 map 时忽略特定字段

java - 将 json 数组转换为 json(raw) 字符串列表

java - 简单的 Jackson XML 反序列化到 Java 不起作用

jaxb - xjc:无法兑现职业定制

Java 数据模型验证代码和 XML 模式

java - 使用 JAXB 生成 Java 原始类型的 XML 模式类型不添加 required 到它

java - 将不同格式的JSON字符串反序列化为同一个Java类的实例

java - 关于 REST 响应和 XMLElement