[英]JAX-RS - JSON without root node in apache CXF
如果我們在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)
請建議任何解決方案。 提前致謝。
您可以通過自定義provider
來使用droproot element屬性進行配置
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
</bean>
</jaxrs:providers>
您也可以使用自定義JAXBElement進行配置,請在此處查看
例
<bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="outDropElements">
<list>
<!-- ignore drop and {http://numbers}number elements -->
<value>{http://numbers}number</value>
<value>index</value>
</list>
</property>
</bean>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.