0

我正在使用 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 模块

非常感谢!一个。

4

0 回答 0