MOXy - 强制单个元素阵列成为对象

时间:2015-06-22 17:39:13

标签: jax-rs moxy jersey-1.0

我们有一个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。

1 个答案:

答案 0 :(得分:0)

通过设置以下属性看起来可以这样做:

MarshallerProperties.JSON_REDUCE_ANY_ARRAYS

true。如果您使用MOXyJsonProvider,则必须创建preWriteTo()子类并实施Marshaller对象,并设置上面的属性。

编辑 JSON_REDUCE_ANY_ARRAYS 工作。请参阅this错误。