【Java】使用 fasterxml.jackson 进行反序列化以及部分注意事项
我们在对接接口时,不时会遇到以 Json 格式返回数据的接口。后端解析此类接口返回数据时,不免需要进行反序列化以获取到需要的数据对象。
常用的反序列化工具有 Fastjson、Jackson、Gson。这三种都是不错的 Json 处理工具,我这里较常用的是 Jackson。
使用 Jackson 反序列化:
1. 添加 maven 依赖
1 2 3 4 5 | < dependency > < groupId >com.fasterxml.jackson.core</ groupId > < artifactId >jackson-databind</ artifactId > < version >xx.xx.xx</ version > </ dependency > |
2. 创建 ObjectMapper 对象,并进行解析方式的配置
1 | ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false ); |
其中,configure 方法配置该 ObjectMapper 对象解析 Json 字符串的方式。DeserializationFeature 以枚举方式给出了 ObjectMapper 的配置方式。该方法可由对应的 enable 或 disable 取代,注意对应的状态字即可。
3. 使用 ObjectMapper 的 readValue 方法进行 反序列化,将 Json 字符串转化成指定类的对象
1 | DataResult dataResult = objectMapper.readValue(JsonStr, DataResult. class ); |
通常情况下,属性名与 Json 字符串的 Key 值相对应即可成功解析出需要类的对象。
注意点:
1. 在解析复杂 Sql 的时候需要使用 @JsonProperty 注解标注属性对应的 Json 字符串 Key 值,否则即使你指定的 Java 类型接口与属性与 Json 字符串一一对应,也依旧可能存在无法解析或部分解析失败的情况。
2. Jackson 无法直接将 Json 字符串中的时间值转化为 LocalDateTime 等 Java 时间类型,需要为 ObjectMapper 对象注册时间解析模块。
1 2 3 4 5 | JavaTimeModule module = new JavaTimeModule(); LocalDateTimeDeserializer localDateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss" )); module.addDeserializer(LocalDateTime. class , localDateTimeDeserializer); ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false ) .registerModule(module); |
其中 JavaTimeModule、LocalDateTimeDeserializer 等对象依赖 jackson-datatype-jsr310,使用时需要添加依赖
1 2 3 4 5 | <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>xx.xx.xx</version> </dependency> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本