【发布时间】:2013-12-04 11:58:04
【问题描述】:
如果我们在 REST 响应中返回集合对象,那么 JSON(它将以根元素节点作为集合对象名称 - 在本例中为员工)将采用以下格式:
{
"employees": [{
"id": "1",
"name": "employee name1",
"company": "ABC Company"
}, {
"id": "2",
"name": "employee name2",
"company": "XYZ Company"
}]
}
这是我们的 JsonProvider 配置在应用程序上下文中的一个截图
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
<property name="serializeAsArray" value="true" />
<property name="dropCollectionWrapperElement" value="true" />
</bean>
@XmlRootElement(name="emps")
public class EmpList{
private List<Emp> employees;
//setter and getter methods
}
@XmlRootElement(name="emp")
public class Emp{
private int id;
private Sting name;
private String company;
//setter and getter methods
}
我不希望 JSON 响应中有 Collection 对象根元素节点。输出应采用以下格式。我正在使用 Apache CXF 框架来提供休息服务。
{
[{
"id": "1",
"name": "employee name1",
"company": "ABC Company"
}, {
"id": "2",
"name": "employee name2",
"company": "XYZ Company"
}]
}
我们使用的是默认的 cxf JsonProvider (Jettison)
请提出任何解决方案。提前致谢。
【问题讨论】:
-
你能添加代码吗?您使用的是 Jackson 还是 Jettison 的哪个实现?
-
我们使用默认的 cxf JsonProvider (Jettison)。我们有文档并提供更多详细信息,请查看它。谢谢 kaPra。
-
我认为这是不可能的,因为您尝试生成的输出不是有效的 json。
标签: java json cxf jax-rs cxfrs