cfx 开发 jackson 自定义json 的序列化和与反序列化 配置

第一步:maven 引用

<dependency>
    <groupId>org.codehaus.jacksongroupId>
    <artifactId>jackson-jaxrsartifactId>
    <version>1.9.13version>
dependency>

第二步:创建扩展ObjectMapper
在序列化和反序列化过程中,如果我们想要自定义的json格式,可以通过统一配置来实现。
可以自己创建一个类来扩展org.codehaus.jackson.map包下的ObjectMapper类。
如下代码块,创建一个自定义的JacksonObjectMapper类。

package com.divx.service.controller;

import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;

public class JacksonObjectMapper extends ObjectMapper{
    public JacksonObjectMapper() {
        super();
        //反序列化时配置UNWRAP_ROOT_VALUE的值为true,表示连同根元素一起解析,如果client 传过来的json串以类名作为根元素,则需要用到此配置
        super.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);

        //序列化时设置WRITE_NULL_PROPERTIES的值为false,表示对象里为空的字段不序列化到json 串里
       super.configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES, false);
       super.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
        }
}

在DeserializationConfig.Feature 和SerializationConfig.Feature里有很多设置,可以依据自己的需要进行选择性设置。

第三步:在xml文件中注入 JacksonObjectMapper Bean

 id = "jacksionMapper" class="com.divx.service.controller.JacksonObjectMapper"/>

 id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" >
        <property name="mapper" ref="jacksionMapper">property>
  

这样,jsonprovider 便以自定义的转化形式进行序列化和反序列化。

你可能感兴趣的:(jackson,CXF)