【问题标题】:Force jsonix to output xsi:type attribute强制 jsonix 输出 xsi:type 属性
【发布时间】:2019-10-21 08:38:27
【问题描述】:

根据 Jsonix 的 wiki 页面关于其对 xsi:type 的支持:

编组时,Jsonix 检查值是否与 在属性或元素声明中声明

我想知道是否有办法显式让 Jsonix 生成该属性?通过指定TYPE_NAME 属性,我可以在另一个项目中做到这一点,即

  element: {
    TYPE_NAME: 'mapping.Element',
    xAttr1: '1',
    xAttr2: '2',
    content: 'some content',
  },

现在我再次进行一些 XML 导出,但相同的方法不再起作用,即我得到了正确的 xml,但缺少 xsi:typeHere 是一个使用我的映射的精简版本的工作小提琴,它显示了如何使用类型对项目进行解组,然后在没有类型的情况下进行编组。

【问题讨论】:

    标签: jsonix


    【解决方案1】:

    在您的示例中,您未编组的 Title 具有与您的映射匹配的类型 Mappings.SomeType。所以 Jsonix 不需要输出xsi:type 因为有匹配。

    如果我理解正确,您希望 Jsonix始终 输出 xsi:type。不知道你为什么需要这个,但不支持 OOTB。

    您可能需要修补 Jsonix 才能获得此功能。这里是 Jsonix 决定是否添加 xsi:type 的地方:

    https://github.com/highsource/jsonix/blob/22b8800aa5acb645d614d01b858d0c8a25a3075f/scripts/src/main/javascript/org/hisrc/jsonix/Jsonix/Binding/Marshalls.js#L20

    由于我不太了解强制xsi:type 输出的必要性,因此我认为Jsonix 中不应包含此功能。所以你最终可能会得到你自己的叉子。

    【讨论】:

    • 我需要特定元素的 xsi:type,并通过在映射文件中将这些元素的 type 设为 null 来解决此问题。然后我输入为TYPE_NAME 的任何内容都会自动放入xsi:type
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多