我正在使用 Jackson XML,2.12 将 XML 转换为 JsonNode。这个库很棒,2.12 版让我非常接近我需要的东西。
就我而言,元素的顺序很重要,但开箱即用,2.12 版不支持这一点。
例如,我有 XML:
<body>Hello, <b>world</b>!</body>
目前,它输出:
{
"" : [ "Hello", "!" ],
"b" : "world"
}
我想要的是它以某种方式输出 JSON,其中“!” 最后出现,类似于:
{
"" : "Hello",
"b" : "world",
"" : "!"
}
或者
{
"" : [ "Hello" ],
"b" : "world",
"" : [ "!"]
}
甚至是引入了一个新元素的东西,比如“_position”,它给出了元素的序数值,就像它出现在原始 XML 中一样。可能是这样的:
{
"": [
{
"": "Hello",
"_position": 0
},
{
"": "!",
"_position": 2
}
],
"b": {
"": "world",
"_position": 1
}
}
这个问题甚至可以进一步概括,适用于任何重复的元素;我的示例使用“混合内容”这一事实实际上是无关紧要的。
我不知道如何解决这个问题,要么保持顺序,要么能够提取原始文档中出现的元素的顺序。自定义反序列化器?一个扩展 SimpleModule 的类,它注册了一个客户反序列化器?可以传递给解决世界问题的映射器的神奇 ENUM 值?
有没有人有任何想法或建议?我将把 Jackson 代码放在调试器下,并逐步了解正在发生的事情,试图深入了解如何解决这个问题,但我想我会先在这里问。
这里提到了这个问题:Jackson 2.12:改进的 XML 模块
非常感谢!一个。