How to remove namespace prefixes from JSON response in CXF / JAX-RS?

I have the following answer 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 part 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> 

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

I tried adding org.apache.cxf.interceptor.transform.TransformOutInterceptor to cxf:outInterceptors , but that didn't help.

+4
source share
1 answer

In beans.xml, you can specify a jQuery bean, as shown below.

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

Now call jsonProvider in the Context Configuration as shown 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> 
+2
source

Source: https://habr.com/ru/post/1441102/


All Articles