2012-10-21 63 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