目前我正在设计一个RESTful API,并使用JAX-RS作为后端。许多回复具有以下简单形式:
{
"someList": [
"item1" : ...,
"item2" : ...,
"itemn" : ...
]
}
重要的是数组的字段名。它是客户端所必需的(EmberJS数据)。我试图用标准的ResponseBuilder创建响应,但我不知道如何定义列表的字段名。我得到的所有回复看起来像:
[
"item1" : ...,
"item2" : ...,
"itemn" : ...
]
在过去,我总是为列表创建一个具有一个属性的容器类。这是可行的,但我认为必须有一个更好的解决方案。也许是一个辅助类来封装其他对象?
这取决于您正在使用的JSON序列化程序。Jettison默认情况下将响应封装在根元素中(我认为EnvelopeObject不是一个正确的词)。
如果使用Jackson,则可以使用SerializationFeature.WRAP_ROOT_VALUE(或反序列化功能)配置此行为。
如果使用Jackson Annotations,则可以使用@JsonRootName指定密钥的名称;如果使用JAXB Annotation,则可以用@XmlRootElement指定密钥名称。