我有一些 XML 格式的简单数据,我需要将其转换为 JSON,并且还能够将 JSON 转换回相同的 XML 字符串。但是我在使用现有的 jackson(2.0.6 版)库时遇到了问题。
这是具有相似结构的 XML 数据示例
<channels>
<channel>A</channel>
<channel>B</channel>
<channel>C</channel>
</channels>
Run Code Online (Sandbox Code Playgroud)
为了能够将其转换回原始 XML,我希望 JSON 看起来像这样
{
"channels": {
"channel": [
"A",
"B",
"C"
]
}
}
Run Code Online (Sandbox Code Playgroud)
然而杰克逊给了我
{"channel":"C"}
Run Code Online (Sandbox Code Playgroud)
不保留根元素名称,而是创建通道数组,最后一个覆盖之前的。
查看 com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer 的源代码,我发现该库不支持此功能,但允许覆盖和更改行为。
/**
* Method called when there is a duplicate value for a field.
* By default we don't care, and the last value is used.
* Can be overridden to provide alternate handling, such as throwing
* an exception, or choosing …Run Code Online (Sandbox Code Playgroud)