如何从CXF/JAX-RS中的JSON响应中删除名称空间前缀? [英] How to remove namespace prefixes from JSON response in CXF/JAX-RS?

查看:130
本文介绍了如何从CXF/JAX-RS中的JSON响应中删除名称空间前缀?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有CXF使用JAX-RS创建的以下响应:

I have the following response created by CXF using JAX-RS:

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

这是我当前上下文配置的相关部分:

And here is the relevant portion of my current context configuration:

<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等).

I would like to receive responses like the one above, without the namespace prefixes (i.e. ns1, ns2, etc...).

我试图将org.apache.cxf.interceptor.transform.TransformOutInterceptor添加到cxf:outInterceptors,但这没有帮助.

I have tried to add org.apache.cxf.interceptor.transform.TransformOutInterceptor to cxf:outInterceptors, but it did not help.

推荐答案

在beans.xml中,您可以像下面这样指定bean jsonProvider.

In your beans.xml, you can specife the bean jsonProvider like below.

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

现在按如下所示在上下文配置中调用jsonProvider

Now Invoke the jsonProvider in the Context Configuration as below

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

这篇关于如何从CXF/JAX-RS中的JSON响应中删除名称空间前缀?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆