JSON库 Jackson的一些使用笔记

本文介绍如何在Java中通过@JsonProperty实现字段名映射,解决驼峰命名与API响应不一致的问题。同时探讨了自定义序列化及反序列化的技巧,并介绍了如何使用@JsonIgnore来忽略不需要参与序列化的字段。

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

如何将字段名和需要read或者write的String里的字段名进行映射(例如JavaBean里保持驼峰去接收一些API返回的非驼峰结果)
  1. 方法1使用@JsonProperty ,可以在Java里保留驼峰
    //这样就可以让status获取到statusId的值,并且在序列话的时候也会有此影响
    @JsonProperty(value = "statusId")
    private Integer status;
如何实现自定义的序列化和反序列化

jackyrong的jackson中自定义处理序列化和反序列化进行了介绍

有时候想忽略某些字段,或者某些public的Get方法不希望影响序列化和反序列化

用即可@JsonIgnore,作用在字段或方法上,用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解
参考jackson annotations注解详解

ALLOW_UNQUOTED_CONTROL_CHARS
  • 默认ALLOW_UNQUOTED_CONTROL_CHARS是false,一般我们的json都是代码生成不会有啥问题,但是有时候数据来源不一定是代码toJson的,这个时候解析就需要放松一些,例如
"{"a" : "b\\nc"}"  有可能拿到的就是 "{"a" : "b\nc"}",(这是在代码里面的写法,存储的时候还是会少一个斜杠的).这个时候如果ALLOW_UNQUOTED_CONTROL_CHARS为false就会报错,json不可解析
  • 解决方案
mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
  • 会遇到的异常
com.fasterxml.jackson.core.JsonParseException:Illegal unquoted character
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值