`

cxf-rest 配置JSonProvider 来定制JSON的转换格式

 
阅读更多
关于CXF JSonProvider
CXF通过JSonProvider对JSon提供支持,默认的Provider采用jettsion进行编码或解码。
无论是服务端还是客户端,CXF都可以通过配置JSonProvider来配置Json的格式。
比如服务器端
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
        <property name="dropRootElement" value="true"/>
        <property name="dropCollectionWrapperElement" value="true"/>
        <property name="serializeAsArray" value="true"/>
</bean>
       
<jaxrs:server id="customerService" address="/service1">
    <jaxrs:serviceBeans>
      <ref bean="customerBean" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
            <ref bean="jsonProvider"/>
    </jaxrs:providers>
  </jaxrs:server>

需要说明的而是,JsonProvider的属性 dropRootElement 默认为false,则Json格式会将类名作为第一个节点,如
{Customer:{"id":123,"name":"John"}},如果配置为true,则Json格式为{"id":123,"name":"John"},而Gson等Json包会解析格式为后者。
而dropCollectionWrapperElement属性默认为false,则当遇到Collection时,Json会在集合中将容器中类名作为一个节点,比如{"Customer":{{"id":123,"name":"John"}}},而设置为false,则JSon格式为{{"id":123,"name":"John"}}
而serializeAsArray属性默认为false,则当遇到Collecion时,格式为{{"id":123,"name":"John"}},如果设置为true,则格式为[{"id":123,"name":"john"}],而Gson等解析为后者。

而对于CXF Client端,同样设置JSonProvider,可用spring,也可直接编码
JSONProvider myJsonProvider = new JSONProvider();
                        myJsonProvider.setDropRootElement(true);
                        myJsonProvider.setSupportUnwrapped(true);
                        myJsonProvider.setSerializeAsArray(true);
                        List<JSONProvider> providers = new ArrayList<JSONProvider>();
                        providers.add(myJsonProvider);
                        WebClient client = WebClient.create("http://10.148.11.102:8080/testCXFServer",providers);
分享到:
评论

相关推荐

    cxf-core-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...

    cxf-rt-rs-client-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-rs-client-3.0.1.jar; 赠送原API文档:cxf-rt-rs-client-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-client-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-rs-client-3.0.1.pom; 包含...

    cxf-rt-frontend-jaxrs-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-jaxrs-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxrs-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxrs-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxrs...

    cxf-rt-transports-http-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-transports-http-3.0.1.jar; 赠送原API文档:cxf-rt-transports-http-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-transports-http-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-transports-...

    cxf-rt-frontend-simple-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-simple-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-simple-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-simple-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-...

    cxf-rt-frontend-jaxws-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-jaxws-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxws-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxws-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxws...

    cxf-rt-bindings-soap-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-bindings-soap-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-soap-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-soap-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-soap-...

    apache-cxf-2.2.4

    安装和使用"apache-cxf-2.2.4"时,开发者需要根据自己的项目需求选择合适的组件,配置相应的服务和客户端,并通过Maven或Gradle等构建工具将其依赖引入到项目中。同时,阅读官方文档和示例代码可以帮助更好地理解和...

    apache-cxf-2.5.2

    在使用"apache-cxf-2.5.2"时,开发者通常会首先阅读文档,了解如何配置和启动CXF服务器,然后使用提供的示例或自己编写代码来创建和部署Web服务。此外,他们还需要了解如何在Spring框架中集成CXF,以便更好地管理...

    apache-cxf-3.1.1跟3.1.6所有jar包

    此外,还有其他如`cxf-rt-bindings-soap.jar`、`cxf-rt-databinding-jaxb.jar`、`cxf-rt-rs-extension-providers.jar`等,它们分别对应于不同的功能,如SOAP绑定、JAXB数据绑定和RESTful服务的提供者扩展。...

    apache-cxf-3.1.6所有jar包

    - **JAX-WS和JAX-RS实现**:如cxf-rt-wsdl.jar、cxf-rt-rs-extension-providers.jar等,实现了Web服务和RESTful服务的处理逻辑。 - **数据绑定**:如cxf-rt-databinding-jaxb.jar,提供了JAXB的支持。 - **协议栈**...

    apache-cxf-3.2.0完整版jar包

    6. **运行时支持**:其他文件可能包括运行时支持库,如`cxf-rt-rs-extension-providers.jar`,它提供了JAX-RS扩展,如JSON-P(Java API for JSON Processing)支持。 7. **国际化**:CXF还可能包含各种语言的资源包...

    apache-cxf-3.5.0.zip

    - 在服务器环境中,可以使用CXF的Servlet或Jetty容器来部署Web服务,通过修改`etc/cxf.xml`等配置文件进行定制。 - 客户端可以使用CXF的动态客户端API或者生成的Java客户端代码来调用服务。 6. **标签解析** ...

    cxf-core-3.1.16.jar

    cxf-core-3.1.16版本jar包,用于java开发使用

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    &lt;import resource="classpath:META-INF/cxf/cxf.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml"/&gt;

    apache-cxf-2.7.11

    在解压后的"apache-cxf-2.7.11"文件中,你将找到以下组件和资源: - **bin目录**:包含启动和配置CXF服务的脚本。 - **lib目录**:包含了CXF运行所需的库文件,包括JAR包。 - **docs目录**:存放API文档和其他技术...

    apache-cxf-3.3.3.zip

    4. **模块化设计**:CXF由多个模块组成,开发者可以根据项目需求选择使用,如 CXF-DOSGi(用于OSGi环境)、CXF-RTC(实时通信)和CXF-WS-Addressing(Web服务寻址)等。 5. **测试工具**:CXF提供了一些工具,如CXF...

    cxf-rt-frontend-jaxws-3.0.16.jar 下载

    cxf-rt-frontend-jaxws-3.0.16.jar jar包下载3.0.16版本下载

    apache-cxf-2.7.6.rar

    这个"apache-cxf-2.7.6.rar"文件包含的是Apache CXF 2.7.6版本的源码、库文件和其他相关资源。CXF这个名字是“Cocoon XML Framework”的缩写,起初它是Apache Cocoon项目的一部分,后来发展成为专注于Web服务的独立...

    apache-cxf-2.7.5所有jar都在

    在实际使用中,开发者可能还需要配置CXF的相关XML配置文件(如cxf.xml或cxf-servlet.xml),以定制服务行为和设置。此外,通过Maven或Gradle等构建工具,可以更方便地管理和引入CXF的依赖。 总之,Apache CXF 2.7.5...

Global site tag (gtag.js) - Google Analytics