我想在我使用 Jackson 的 spring boot 应用程序中将一组 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>我怎样才能添加几个孩子并仍然保留我自己的节点名称?
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
您需要放置一个ArrayNode并将孩子添加到其中
OjectNode node = mapper.createObjectNode();
ArrayNode arrayNode = node.putArray("child");
list.forEach(x -> arrayNode.addPOJO(x));
添加回答
举报
0/150
提交
取消