老蒋的知识库

  • 首页
  • 文章归档
  • 关于页面

  • 搜索

Java Spring序列化与Jackson妙用

发表于 2023-09-22 | 分类于 Java | 0 | 阅读次数 33

Jackson是什么?

Jackson是Json的数据处理工具,用于JSON格式数据的解析与生成,是Spring内置解析器,是Spring默认的序列化和反序列化工具,支持自定义实现复杂的、个性化的序列化和反序列化操作。
总之Spring有关序列化的操作都可以来看Jackson。

参考资料

https://github.com/FasterXML/jackson
https://www.yiibai.com/jackson/jackson_objectmapper.html
https://www.cnblogs.com/cnjavahome/p/8393178.html
https://www.cnblogs.com/shenStudy/p/17010236.html

全局配置文件

spring:
  jackson:
    ## 按照此规则进行对象的序列化
    ## 1.ALWAYS默认 2. NON_NULL属性为NULL不序列化 3.NON_EMPTY属性为""或NULL都不序列化,返回的json没有这个字段
    ## 4.NON_DEFAULT属性为默认值不序列化
    default-property-inclusion: non_null
    ## 指定日期格式
    date-format: yyyy-MM-dd HH:mm:ss
    ## 指定使用语言 zh_CN简体中文
    locale: zh_CN
    ## 指定日期格式化的时区 中国为东8区
    time-zone: GMT+8
    ## 指定属性名的命名方式:SNAKE_CASE蛇形
    property-naming-strategy: SNAKE_CASE

注意的坑

  1. 配置property-naming-strategy: SNAKE_CASE之后@JsonIgnoreProperties需要通过下划线来屏蔽属性例如屏蔽属性createTime要写作@JsonIgnoreProperties({create_time})

常用注解

@JsonIgnoreProperties 作用于类,用法1:在序列化与反序列化中忽略xx属性 eg :@JsonIgnoreProperties({“xx”}) 用法2:忽略不认识的字段 eg: @JsonIgnoreProperties(ignoreUnknown = true)
@JsonIgnore 作用于属性,使相应字段不进行序列化与反序列化
@JsonInclude 作用于类,用于设置序列化方式 eg: @JsonInclude(JsonInclude.Include.NON_EMPTY) 表示属性为""或者为NULL时不进行序列化
@JsonFormat 作用于属性,可以把Date类型直接转化为设定好的格式 eg: @JsonFormat(timezone = “GMT+8” pattern = “yyyy-MM-dd HH-mm-ss”)
@JsonProperty 作用于属性,为属性设置别名,在序列化时,把属性名转换为别名 eg: @JsonProperty(“file_id”)
@JsonAlias 作用于属性,为属性设置别名,在反序列化时,让属性接收多个json字段的值 eg: @JsonAlias({“fileId”,“file_id”})
@JsonDeserialize 作用于属性,为该属性指定自定义反序列化类 eg: @JsonDeserialize(using = xx.class) 此类需要继承JsonDeserializer<> 重写反序列化方法 public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException
@JsonSerialize 作用于属性,为该属性指定自定义序列化类 eg: @JsonSerialize(using = xx.class) 此类需要继承JsonDeserializer<> 重写序列化方法 public void serialize(Boolean aBoolean, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException

自定义ObjectMapper进行序列化与反序列化

代码示例待定

  • 本文作者: jagger
  • 本文链接: /archives/javaspring-xu-lie-hua-yu-jackson-miao-yong
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
Mybatis小技巧
Java Aop 切面编程定制化打印Api接口日志
jagger

jagger

66 日志
31 分类
0 标签
Creative Commons
0%
© 2026 jagger
由 Halo 强力驱动