我有使用JAX-RS由CXF创建的以下响应:
{"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.TransformOutInterceptor
添加到cxf:outInterceptors
,但它没有帮助。
答案 0 :(得分:3)
在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>