我们有一个Jersey 1.18 jax-rs服务,过去常常使用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的v2.5.2。
答案 0 :(得分:0)
通过设置以下属性看起来可以这样做:
MarshallerProperties.JSON_REDUCE_ANY_ARRAYS
到true
。如果您使用MOXyJsonProvider
,则必须创建preWriteTo()
子类并实施Marshaller
对象,并设置上面的属性。
编辑 JSON_REDUCE_ANY_ARRAYS 不工作。请参阅this错误。