【发布时间】:2019-11-30 08:20:21
【问题描述】:
我想在我的 Spring Boot 应用程序中使用 Jackson 将一组 POJO 序列化为自定义 XML 格式。节点名称child将在运行时修改。
我已经设法用一个这样的孩子创建了一个根:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
class MyPojo {
public int random = new Random().nextInt();
public static void main(String[] args) throws JsonProcessingException {
List<MyPojo> list = Arrays.asList(new MyPojo(), new MyPojo());
XmlMapper mapper = new XmlMapper();
final ObjectWriter writer = mapper.writer().withRootName("parent");
ObjectNode node = mapper.createObjectNode();
list.forEach(x -> node.putPOJO("child", x)); // <= does not work, replaces values instead of adding them
String s = writer.writeValueAsString(node);
System.out.println(s);
}
}
我希望它输出:
<parent>
<child>
<random>123</random>
</child>
<child>
<random>234</random>
</child>
</parent>
但当前代码只输出:
<parent>
<child>
<random>234</random>
</child>
</parent>
如何添加多个子节点并仍保留我自己的节点名称?
【问题讨论】:
标签: java xml spring serialization jackson