【发布时间】:2021-11-22 08:44:36
【问题描述】:
我正在尝试使用 Jackson(2.9.4 版)创建一个简单的 xml-json 转换器,但列表有问题。
package testes;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class Main {
public static void main(String[] args) throws Exception {
String x = "{\"a\":[{\"b\":1,\"c\":true,\"d\":\"teste\"},{\"b\":2,\"c\":false,\"d\":\"texto\"}]}";
System.err.println("original: " + x);
x = jsonToXml(x);
System.err.println("xml: " + x);
x = xmlToJson(x);
System.err.println("json: " + x);
}
private static final ObjectMapper jsonMapper = new ObjectMapper();
private static final ObjectMapper xmlMapper = new XmlMapper().setDefaultUseWrapper(true);
public static final String jsonToXml(String json) throws Exception {
final JsonNode node = jsonMapper.readTree(json);
return xmlMapper.writeValueAsString(node);
}
public static final String xmlToJson(String xml) throws Exception {
final JsonNode node = xmlMapper.readTree(xml);
return jsonMapper.writeValueAsString(node);
}
}
输出:
original: {"a":[{"b":1,"c":true,"d":"teste"},{"b":2,"c":false,"d":"texto"}]}
xml: <ObjectNode><a><b>1</b><c>true</c><d>teste</d></a><a><b>2</b><c>false</c><d>texto</d></a></ObjectNode>
json: {"a":{"b":"2","c":"false","d":"texto"}}
是否可以调整设置以使列表在格式之间正确转换?
我不明白该属性
.setDefaultUseWrapper(true);
应该已经完成了这项工作。
【问题讨论】: