如何在CXF / JAX-RS中从JSON响应中删除名称空间前缀?

前端之家收集整理的这篇文章主要介绍了如何在CXF / JAX-RS中从JSON响应中删除名称空间前缀?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有使用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,但它没有帮助.

解决方法

在您的beans.xml中,您可以像下面那样指定bean jsonProvider.
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.AegisJSONProvider">
<property name="ignoreNamespaces" value="true" />
</bean>

现在在Context Configuration中调用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>

猜你在找的JavaScript相关文章