MOXy - 强制单个元素数组成为对象
MOXy - Force Single Element Arrays to be Objects
我们有一个 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。
看起来这可以通过设置以下 属性:
MarshallerProperties.JSON_REDUCE_ANY_ARRAYS
到true
。如果您正在使用 MOXyJsonProvider
,则必须子类化并实现 preWriteTo()
才能访问 Marshaller
对象并设置上面的 属性。
EDIT JSON_REDUCE_ANY_ARRAYS 不 有效。请参阅 this 错误。
我们有一个 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。
看起来这可以通过设置以下 属性:
MarshallerProperties.JSON_REDUCE_ANY_ARRAYS
到true
。如果您正在使用 MOXyJsonProvider
,则必须子类化并实现 preWriteTo()
才能访问 Marshaller
对象并设置上面的 属性。
EDIT JSON_REDUCE_ANY_ARRAYS 不 有效。请参阅 this 错误。