第一步:maven 引用
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</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
<bean id = "jacksionMapper" class="com.divx.service.controller.JacksonObjectMapper"/>
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" >
<property name="mapper" ref="jacksionMapper"></property>
</bean>
这样,jsonprovider 便以自定义的转化形式进行序列化和反序列化。