我们有一个包含集合的 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 响应中使用复数形式,如果有,如何实现。
这感觉可能是 jackson 的错误,但发生这种情况可能有充分的理由。另外,我意识到,如果每个人都使用相同的 POJO,我们就不必关心编码文本的样子,但在这种情况下,其中一个消费者无法使用我们的 POJO。
最佳答案
如果您使用的是 Jackson 2.1 或更高版本,可以启用一项功能来获得您想要的行为
ObjectMapper m = new ObjectMapper()
m.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);
关于java - 如何根据 Accepts header 以不同方式序列化 POJO 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259550/