小编alt*_*ve4的帖子

使用 jackson 将具有重复元素的 XML 转换为 JSON

我有一些 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)

java xml jackson xml-deserialization

6
推荐指数
1
解决办法
5196
查看次数

标签 统计

jackson ×1

java ×1

xml ×1

xml-deserialization ×1