![](https://img-blog.csdnimg.cn/direct/668e290e453d4f69aa70f5777ccbd3ac.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Jackson 2.x
文章平均质量分 90
本系列学习的对象是Jackson,从基础入门到深入剖析,相信通过本栏的学习,能够帮助大家在技术方面更上一层楼。
云烟成雨TD
一个追求有道有术的非典型程序员
展开
-
Jackson 2.x 系列【1】概述
大多数开发场景下,涉及到JSON时,大部分成熟的框架已经帮我们封装好了,比如Spring MVC、Spring Boot,除了需要在业务代码中调用简单API进行JSON转换外,其他时候并不太涉及。所以这也导致了我们对JSON工具的高级用法、执行原理并不太熟悉。所以有必要深入了解一下相关Json工具,以便于我们在性能优化、高级扩展时能够从容应对。原创 2024-03-19 17:09:55 · 882 阅读 · 0 评论 -
Jackson 2.x 系列【2】生成器 JsonGenerator
其中jackson-core是核心中的核心,其他模块都需要引入,提供了一些基本的API和公共类,jackson-core中的API可以理解为Low Level API,业务开发人员一般不需要接触,因为有更易用的高级API,低级API更加复杂可读性较差,但是更加灵活,某些场景下能完成高级API做不到的事情。原创 2024-03-19 17:15:32 · 1576 阅读 · 0 评论 -
Jackson 2.x 系列【3】解析器 JsonParser
在上一篇文档中,我们使用JsonGenerator生成了一个JSON文件,接下来我们学习使用JsonParser进行解析。原创 2024-03-20 13:39:23 · 1180 阅读 · 0 评论 -
Jackson 2.x 系列【4】对象映射器 ObjectMapper
在前两篇文档中,我们学习了JsonGenerator和JsonParser的简单用法,实际开发中很少用到它们,因为它们属于低级API,自由度高但比较复杂。 我们使用最多的还是ObjectMapper,他是jackson-databind数据绑定模块提供面向用户的高级API。原创 2024-03-20 13:41:44 · 2012 阅读 · 0 评论 -
Jackson 2.x 系列【5】注解大全篇一
在前几篇文档中,我们学习了Jackson中几个非常重要的类,并实现了一些简单的JSON数据转换功能。在实际开发中,可能会遇到的一些个性化要求的场景,而不是简单的一些直接转换,例如,对于null值字段、敏感字段不进行序列化;Long类型的字段需要序列化为String类型(不然返回给前端时会丢失精度)…原创 2024-03-28 16:38:28 · 978 阅读 · 0 评论 -
Jackson 2.x 系列【6】注解大全篇二
@JsonValue用于将整个对象序列化为单个值,常用于只包含单个值的简单对象或枚举类型。Jackson 会忽略对象的其他属性和字段,只序列化由 @JsonValue 注解指定的方法或属性值。原创 2024-03-28 16:39:06 · 1140 阅读 · 0 评论 -
Jackson 2.x 系列【7】注解大全篇三
@JacksonAnnotation是一个元注解(作用于其他注解的注解),它的主要作用是标识当前注解是Jackson提供的注解,将来也用于传递一些通用的注解配置。原创 2024-03-29 09:30:53 · 1161 阅读 · 0 评论 -
Jackson 2.x 系列【8】注解大全篇四
🙈🙈🙈紧接上篇,接下来我们介绍`jackson-databind`模块提供的所有注解,到这里注解大全篇就结束了。🙈🙈🙈原创 2024-03-29 09:49:10 · 1264 阅读 · 0 评论 -
Jackson 2.x 系列【9】特征配置篇之总体介绍
除了使用注解的方式,Jackson还提供了很多Feature特征枚举类,用于定制序列化\反序列化行为,接下来的几篇会详细介绍这些特征。原创 2024-04-01 10:57:52 · 1070 阅读 · 0 评论 -
Jackson 2.x 系列【10】特征配置篇之 JsonFactory.Feature、JsonGenerator.Feature、JsonParser.Feature
本篇介绍JsonFactory、JsonGenerator、JsonParser提供的内部枚举类,因为它们是底层API,所以其特征也偏底层处理,实际开发中很少去修改默认配置,对于我们来说,也是了解即可。原创 2024-04-01 10:58:13 · 1180 阅读 · 0 评论 -
Jackson 2.x 系列【11】特征配置篇之 JsonWriteFeature、JsonReadFeature
在上上篇文档中,有了解过JsonGenerator.Feature、JsonParser.Feature中的很多枚举项都已经被标记过时,官方对其进行了拆分:JsonReadFeature、JsonWriteFeature(专门处理Json格式)StreamReadFeature、StreamWriteFeature(处理任何格式)原创 2024-04-02 14:14:45 · 929 阅读 · 0 评论 -
Jackson 2.x 系列【12】特征配置篇之 SerializationFeature
在前几篇文档中,我们介绍了很多特征枚举,实际它们比较偏底层,使用的频率并不高,接下来我们介绍业务处理中需要经常用到了的SerializationFeature和DeserializationFeature。之前说过SerializationFeature和DeserializationFeature是jackson-databind包中提供的枚举,其实现的也是绑定模块中的ConfigFeature接口,可以直接在ObjectMapper或JsonMapper对象中配置。原创 2024-04-02 14:15:19 · 1387 阅读 · 0 评论 -
Jackson 2.x 系列【13】特征配置篇之 DeserializationFeature
接下来,我们分类介绍DeserializationFeature提供的所有特征枚举。DeserializationFeature用于定义了一组影响JSON文本反序列化方式的特性,这些特性既可以通过ObjectMapper设置(作为默认值),也可以通过ObjectReader设置。原创 2024-04-07 09:47:01 · 1154 阅读 · 0 评论 -
Jackson 2.x 系列【14】特征配置篇之 MapperFeature
在前两篇文档中,我们介绍了jackson-databind模块提供的SerializationFeature、DeserializationFeature特征枚举类,它们主要作用于值的处理,比如数据类型转换、错误处理等,而MapperFeature则用于映射处理,即Java Bean属性和Json属性之前的映射。接下来我们了解MapperFeature中的所有特征,到此,特征配置篇就结束了,原创 2024-04-07 09:48:02 · 1256 阅读 · 0 评论 -
Jackson 2.x 系列【15】序列化器 JsonSerializer
JsonSerializer是一个用于序列化Java对象为JSON的抽象类,是Jackson中的重要组件之一。原创 2024-04-08 16:21:46 · 1552 阅读 · 0 评论 -
Jackson 2.x 系列【16】反序列化器 JsonDeserializer
JsonDeserializer是一个用于将JSON反序列化为任意类型的对象的抽象类,是Jackson中的重要组件之一。原创 2024-04-08 16:22:05 · 999 阅读 · 0 评论 -
Jackson 2.x 系列【17】序列化器提供者 SerializerProvider
ObjectMapper在执行过程中,需要获取到对应类型的序列化器或反序列化器,然后执行具体操作。例如在序列化时List,需要获取可以序列化List类型的JsonSerializer(序列化器)。这时需要使用到SerializerProvider,它是一个负责提供特定类型序列化器的抽象类,并实现了缓存功能。原创 2024-04-10 10:15:30 · 889 阅读 · 1 评论 -
Jackson 2.x 系列【18】序列化器创建工厂 SerializerFactory
在上一篇文档中,我们学习了SerializerProvider负责提供特定类型的序列化器,那么序列化器是如何创建的呢,接下来一起学习SerializerFactory来回应这个问题。原创 2024-04-10 10:17:32 · 865 阅读 · 0 评论 -
Jackson 2.x 系列【19】模块 Module
Jackson三大核心模块支持标准的JDK类和自定义Java Bean对象和Json之间的互相转换,当需要扩展以支持其他数据类型时,可以使用Module构建自定义的模块并注册到ObjectMapper中。Jackson已经提供了多个扩展模块,在Jackson 2.x 系列【1】概述中已经有讲述过,接下来讲解Module并实现注册自定义模块。原创 2024-04-11 09:43:33 · 1125 阅读 · 0 评论 -
Jackson 2.x 系列【20】混合注解 Mixin Annotations
Jackson提供了一种混合注解机制(mix-in annotations),允许开发者在不修改原始类的情况下,为其添加或覆盖特定的注解。原创 2024-04-11 09:46:01 · 800 阅读 · 0 评论 -
Jackson 2.x 系列【21】序列化修饰器 BeanSerializerModifier
Java Bean对象的序列化过程是比较复杂的,因为它可能包含了各种类型的属性,在Jackson中该过程是交由BeanSerializer来负责的。同时Jackson也提供了扩展机制,允许通过BeanSerializerModifier在BeanSerializer的创建过程中进行干预和修改,从而实现对序列化过程的自定义。原创 2024-04-12 11:10:48 · 886 阅读 · 0 评论 -
Jackson 2.x 系列【22】自定义序列化/反序列化器
在实际开发中,Jackson核心模块支持了常见类型的数据转换,此外还有很多第三方模块支持不常用的类型,基本已经够用。但是在某些特殊场景下,可能需要支持自定义类型或者转换规则。原创 2024-04-12 11:12:28 · 1020 阅读 · 0 评论 -
Jackson 2.x 系列【23】注解内省 AnnotationIntrospector
Annotation注解是JDK 5引入的一种机制,本身只是起到了标注作用,需要使用注解处理器、反射机制在运行时添加对应注解的处理逻辑。 例如Spring中包含了大量的注解,在运行时,Spring容器通过的反射机制获取类的注解信息,并根据这些信息创建和配置Bean对象。在Jackson中也包含了很多注解,用于配置序列化/反序列化行为,那么这些注解是如何生效的呢?原创 2024-04-15 15:53:27 · 812 阅读 · 0 评论 -
Jackson 2.x 系列【24】Spring Web 集成
Spring生态使用Jackson作为默认的JSON处理框架,这些年随着Spring的大发异彩和Jackson本身的优越特性,已成为世界上最流行的JSON库。接下来,本系列会讲解Spring MVC、Spring Boot中如何使用Jackson,以及Spring对其进行扩展增强的相关源码,所以需要读者有一定的Spring、Spring Boot开发经验。原创 2024-04-15 16:07:59 · 908 阅读 · 1 评论 -
Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置
Spring Boot是当前最流行的Java应用开发框架,简化开发的同时也导致了很多开发人员只会写业务代码,并不太清楚内部组件和配置细节,一旦出问题或者需要性能优化时,就会显得无从下手。所以推荐大家要多学习一下基础的应用框架,了解它们的详细用法和核心原理,不要太依赖于Spring Boot的自动化。接下来我们学习Spring Boot是如何集成的Jackson,并针对开发中常见的问题进行实战演示。原创 2024-04-16 11:18:33 · 1934 阅读 · 0 评论 -
Jackson 2.x 系列【26】Spring Boot 集成之 @JsonComponent、@JsonMixin、JsonObjectSerializer
在之前自定义序列化/反序列化器时,都需要我们自己调用API去注册它们,接下来学习Spring Boot中使用@JsonComponent注解进行注册,使用起来更加灵活方便。原创 2024-04-16 11:19:13 · 556 阅读 · 0 评论 -
Jackson 2.x 系列【27】Spring Boot 集成之 Null 处理
前后端交互中的序列化/反序列化,可能会因为浏览器、后端运行环境、前后端框架限制等等原因,导致在处理一些特殊数据时,发生异常,我们需要了解这是怎么回事并处理。原创 2024-04-17 09:56:05 · 663 阅读 · 0 评论 -
Jackson 2.x 系列【28】Spring Boot 集成之 Long 精度损失
Java直接返回Long整型数据给前端时,JS会自动转换为Number类型,从下面的对比中,可以很直观的看到,当超过JS的整数范围时,该数值会精度损失。原创 2024-04-17 09:57:37 · 755 阅读 · 0 评论 -
Jackson 2.x 系列【29】Spring Boot 集成之 Redis 序列化/反序列化
Redis是一个常用的高性能非关系型内存数据库,接下来我们学习在Spring Boot中使用Redis时,集成基于Jackson的序列化/反序列化。原创 2024-04-18 09:14:55 · 1689 阅读 · 0 评论 -
Jackson 2.x 系列【30】Spring Boot 集成之数据脱敏
数据脱敏指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。例如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。原创 2024-04-23 22:51:41 · 974 阅读 · 0 评论 -
Jackson 2.x 系列【31】Spring Boot 集成之字典回写
需要将数值类型翻译为对应的描述,例如性别1应该翻译为男。和上篇的数据脱敏一样,后端可以在数据库查询或者反序列化返回Http响应时进行处理。原创 2024-04-23 22:51:59 · 1002 阅读 · 0 评论