2012-10-21 60 views
4

我有以下響應通過CXF使用JAX-RS創建:如何從CXF/JAX-RS中的JSON響應中刪除命名空間前綴?

{"ns1.CustomerInformationResponse":{ 
    "@xsi.type":"ns1:CustomerInformationResponse", 
    "ns2.code":"SUCCESS", 
    "ns1.customer":{ 
    "@xsi.type":"ns2:CustomerBaseDTO", 
    "ns2.login":"login1" 
    } 
}} 

這裏是我當前上下文配置的相關部分:

<jaxrs:server address="http://${host}:${port}/rest/customer"> 
    <jaxrs:serviceBeans> 
    <ref bean="customerManagementServiceImpl" /> 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
    <bean class="org.apache.cxf.jaxrs.provider.AegisJSONProvider" /> 
    </jaxrs:providers> 
</jaxrs:server> 

我希望收到像一個答覆上面沒有名稱空間前綴(即ns1,ns2等)。

我試圖添加org.apache.cxf.interceptor.transform.TransformOutInterceptorcxf:outInterceptors,但它沒有幫助。

回答

2

在你的beans.xml中,你可以像下面那樣試試bean jsonProvider。

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.AegisJSONProvider"> 
<property name="ignoreNamespaces" value="true" /> 
</bean> 

現在調用jsonProvider在上下文配置如下

<jaxrs:server address="http://${host}:${port}/rest/customer"> 
    <jaxrs:serviceBeans> 
     <ref bean="customerManagementServiceImpl" /> 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
     <ref bean ="jsonProvider" /> 
    </jaxrs:providers> 
</jaxrs:server> 
+1

此外,您可以使用'attributesToElements'屬性刪除'@'字符加在從XML屬性創建的JSON屬性。 –

+0

我認爲我找到了最好的解決方案後在網上搜索了幾個小時..謝謝你們。 – Arundev