gpt4 book ai didi

java - FasterXML/jackson-dataformat-xml反序列化混合有序标签

转载 作者:行者123 更新时间:2023-12-03 23:14:45 30 4
gpt4 key购买 nike

我有来自客户的 xml:

<a>
<b id="id1"/>
<any-tag/>
<b id="id2"/>
</a>

和简单的 Java 类

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.ToString;

import java.util.List;

@ToString
public class A {

@ToString
public static class B {
public String id;
}


@JacksonXmlProperty(localName = "b")
@JacksonXmlElementWrapper(useWrapping = false)
public List<B> bList;
}

当 Jackson 完成解析时,我得到了结果

A(bList=[A.B(id=id2)])

很明显我只得到了第二个标签,但在 bList 中期望有 2 个标签。我意识到这是因为 any-tag 标签位于第一个和第二个标签 B 之间。

如何读取列表中的所有 B 标签? PS 标签 A 包含其他应阅读的内容。

我正在使用:

'com.fasterxml.jackson.core:jackson-databind:2.5.1',
'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.5.1',
'org.codehaus.woodstox:woodstox-core-asl:4.1.4',

最佳答案

从2.9版本开始,引入了@JsonMerge注解。以下将把每次出现的节点 b 聚合到 bList 中:

@JacksonXmlProperty(localName = "b") 
@JsonMerge()
public List<B> bList;

关于java - FasterXML/jackson-dataformat-xml反序列化混合有序标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087335/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com