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。

4

1 回答 1

0

看起来可以通过设置以下属性来实现:

MarshallerProperties.JSON_REDUCE_ANY_ARRAYS

true. 如果您正在使用,则MOXyJsonProvider必须子类化并实现preWriteTo()才能访问该Marshaller对象并设置上面的属性。

编辑JSON_REDUCE_ANY_ARRAYS不起作用。看到这个错误。

于 2015-06-22T17:48:26.417 回答