帮我弄清楚如何用Jacson
库把Jason节点转换成xml。我的JSON很大(从10到200 mb),包含了很多对象。所以我不能通过类转换并使用@JacksonXmlProperty(localName = "someName")
。这是因为这个json有很多动态元素。问题是xml中数组的格式应该是:
<test_data>
<data_type>numeric</data_type>
<value>
<Item>0</Item>
<Item>1</Item>
</value>
</test_data>
and jason element looks like this:
{
"test_data": {
"data_type": "numeric",
"value": [
0,
1
]
}
}
如果我们使用这个xml并像这样转换它:
public static void main(String[] args) throws IOException {
String xmlStr = """
<test_data>
<data_type>numeric</data_type>
<value>
<Item>0</Item>
<Item>1</Item>
</value>
</test_data>
""";
XmlMapper xmlMapper = new XmlMapper();
JsonNode xml = xmlMapper.readTree(xmlStr);
ObjectMapper jsonMapper = new JsonMapper();
System.out.println(jsonMapper.writeValueAsString(xml));
}
输出为:
{"data_type":"numeric","value":{"Item":["0","1"]}}
反之亦然:
String jsonStr = """
{
"test_data" : {
"data_type" : "numeric",
"value" : [ 0, 1 ]
}
}
""";
ObjectMapper jsonMapper = new JsonMapper();
JsonNode node = jsonMapper.readTree(jsonStr.getBytes());
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
String xml = xmlMapper.writeValueAsString(node);
System.out.println(xml);
输出:
<ObjectNode>
<test_data>
<data_type>numeric</data_type>
<value>0</value>
<value>1</value>
</test_data>
</ObjectNode>
简单地说,我有JsonNode,我需要特定数组格式的xml String,有什么想法吗?
尝试找到为JsonNode创建JsonSerializer的方法,但失败。
1条答案
按热度按时间qjp7pelc1#
我没有找到在XmlMapper端执行此操作的方法,所以我只是修改了一个输入json。用名称为“value”的对象替换名称为“value”的所有数组,并将数组的项复制到名称为“Item”的新数组。代码示例如下所示: