Принудительно jsonix для вывода атрибута xsi: type - PullRequest
0 голосов
/ 21 октября 2019

Согласно вики-странице Jsonix, касающейся поддержки xsi:type:

При сортировке Jsonix проверяет, имеет ли значение тот же тип, который объявлен в объявлении свойства или элемента

Мне интересно, есть ли способ явно заставить Jsonix генерировать этот атрибут? Я смог сделать это в другом проекте, указав свойство TYPE_NAME, т.е.

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

Теперь я снова делаю экспорт XML, но тот же подход больше не работает, то есть я получаюправильный xml, но xsi:type отсутствует. Здесь - это рабочая скрипка, использующая урезанную версию моих сопоставлений, которая показывает, как элемент распаковывается с типом, а затем маршалируется без него.

1 Ответ

0 голосов
/ 22 октября 2019

В вашем примере ваш unmarshalled 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. Так что вы, вероятно, в конечном итоге получите свой собственный форк.

...