0

根据 Jsonix 的 wiki 页面,它支持xsi:type

编组时,Jsonix 检查值是否与属性或元素声明中声明的类型相同

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

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

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

4

1 回答 1

1

在您的示例中,您的 unmarshalledTitle具有与您的映射匹配的 type 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 中不应包含此功能。所以你最终可能会得到你自己的叉子。

于 2019-10-22T07:08:58.910 回答