【发布时间】:2017-11-01 10:36:41
【问题描述】:
我需要用根标签中的值将 JSON 转换为 XML 格式
我已经和 Orden 类配置了 @JsonRootName("orden") 并将 @JsonProperty 添加到所有属性。
实际上,我有一个将 JSON 转换为 XML 但“子节点中的值”的实现。
这是我的转换器实现:
public static String convertJsonObjectToXml (Object obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
String jsonString = mapper.writeValueAsString(obj);
JSONObject json = new JSONObject(jsonString);
String xml = XML.toString(json);
return xml;
}
实现的结果是这样的:
<orden>
<formaOp>C</formaOp>
<agente>109</agente>
<tipo>C</tipo>
<precio>2.5</precio>
<tipoVenc>72</tipoVenc>
<idOrigen>156934</idOrigen>
<instrumento>TS</instrumento>
<ejecucion>SINCRONICA</ejecucion>
<agenteCtpte>3</agenteCtpte>
<comitente>0</comitente>
<fechaOrigen>2013-10-09T08:04:13</fechaOrigen>
<cantidad>10</cantidad>
</orden>
但我需要以下 XML 的较短、不友好或任何格式的名称
<orden idOrigen="156934" fechaOrigen="2014-02-19T15:11:44.000-03:00"
agente="109" agenteCtpte="3" tipo="C" ejecucion="SINCRONICA" instrumento="TS"
cantidad="10" precio="2.5" formaOp="C" tipoVenc="72"/>
有什么想法吗?谢谢!
【问题讨论】:
-
你为什么使用两个不同的 JSON 库? --- 无论如何,既然您使用 Jackson
ObjectMapper转换为 JSON,为什么不使用 JAXB 将对象转换为 XML?这样,您就可以使用 JAXB 注释完全控制 XML 生成。 -
谢谢!我会根据你的评论给出答案