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

本文介绍了如何在CXF项目中结合Jackson进行自定义的JSON序列化和反序列化配置。首先通过Maven引入相关依赖,然后创建一个继承自ObjectMapper的定制类,利用DeserializationConfig和SerializationConfig的特性进行设置。最后在XML配置文件中注入自定义的JacksonObjectMapper Bean,实现JSON数据转换的统一风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步: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 便以自定义的转化形式进行序列化和反序列化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值