如何根据Accepts标头以不同方式序列化POJO字段

时间:2014-03-07 19:58:06

标签: java json jaxb jackson marshalling

我们有一个POJO,其中包含一个集合并对其进行注释:

@XmlElement(name = "<MyId")
@XmlElementWrapper(name = "MyIds")
private final Set<Long> myIds;

我们在CXF中使用JacksonJaxbJsonProvider在我们的REST服务中进行编组。

我们看到的问题是,如果有人请求application / xml,则响应是正确的,因为用户得到:

<MyIds>
  <MyId>123</MyId>
  <MyId>456</MyId>
  ...
</MyIds>

但是当请求application / json时,用户会得到(注意单数字段名称):

{
  "MyId" : [123, 456, ...]
}

我想知道的是,是否有办法在JSON响应中创建复数,如果有,那么如何。

感觉这可能是杰克逊的错误,但可能有一个很好的理由发生这种情况。此外,我意识到如果每个人都使用相同的POJO,我们就不必关心编组文本的样子,但在这种情况下,其中一个消费者无法使用我们的POJO。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Jackson 2.1或更高版本,则可以启用一项功能来获取您想要的行为

ObjectMapper m = new ObjectMapper()
m.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);