MOXy - заставляет одноэлементные массивы быть объектами
У нас есть служба jax-rs Jersey 1.18, которая использовала пакет jersey-json для поддержки JSON. Мы пытаемся перейти на использование MOXy, но не нарушаем наш интерфейс JSON. К сожалению, jersey-json маршалирует одноэлементные списки как объекты и многоэлементные списки как массивы. MOXy по умолчанию собирает списки всех длин в виде массива. Мы понимаем, что способ маршалинга MOXy проще для клиентов, однако у нас уже есть много клиентов, использующих наш интерфейс, и это нарушило бы интерфейс, чтобы начать маршалинг отдельных списков элементов в виде массива. Есть ли способ для MOXy быть сконфигурированным, чтобы маршалировать одноэлементные списки как объекты вместо массивов?
Способ, которым jersey-json маршалирует одноэлементные списки:
"user": {
"name": "Fred Durst",
"phone": "555-222-1111"
}
Способ MOXy маршалов одноэлементных списков:
"user": [
{
"name": "Fred Durst",
"phone": "555-222-1111"
}
]
Мы хотим настроить MOXy для создания прежней сериализации для одноэлементных списков. Это возможно? Мы используем MOXY версии 2.5.2.
1 ответ
Похоже, это возможно, установив следующее свойство:
MarshallerProperties.JSON_REDUCE_ANY_ARRAYS
в true
, Если вы используете MOXyJsonProvider
Вы должны создать подкласс и реализовать preWriteTo()
чтобы получить доступ к Marshaller
возразите и установите свойство выше.
EDIT JSON_REDUCE_ANY_ARRAYS не работает. Смотрите эту ошибку.