Jackson 处理 Map key 为对象的情况

本文探讨了在使用 Jackson 1.x 版本序列化 Map< ObjectA, ObjectB> 时遇到的问题,即 ObjectA 在默认情况下通过 toString 方法序列化,导致反序列化失败。解决方法是实现 Jackson 的 JsonSerializer 和 KeyDeserializer 接口,为 ObjectA 创建特定处理类,并将其注册到 objectMapper 中。示例代码和更详细的解决方案可在 2.x 版本教程中找到。" 127097438,9491880,"网页特效与元素定位:offset, client, scroll及mouseenter事件
摘要由CSDN通过智能技术生成

当使用 jackson 序列化 Map< ObjectA, ObjectB> 对象时,ObjectA 默认会以 toString 的方式来序列化,而在反序列化时,则会直接失败。这个问题,该如何解决呢?

jackson 提供额外的接口供我们扩展,网上以 2.x 版本为例的解决方案很多,1.x 的比较少,这里主要说 1.x 版本的解决方案。

在 jackson 里提供了 JsonSerializer 和 KeyDeserializer 抽象类,针对需要特殊处理的对象 ObjectA,提供对应的实现类,并调用 objectMapper.registerModule 方法注册进去即可。完整示例代码如下所示:

public class JsonUtil {
   
    private final static ObjectMapper objectMapper = new ObjectMapper();
    private final static JsonFactory jsonFac
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值