2023-04-27
Spring Boot
0

目录

springboot之jackson格式化
区别
失效问题
@JsonFormat常见用法
@DateTimeFormat 常见用法

springboot之jackson格式化

常见注解列表

注解名称注解作用
@JsonFormat指定在序列化/反序列化时使用的日期格式。可以用于将日期格式化为指定的字符串,或者将字符串解析为日期对象。
@JsonIgnore指定在序列化/反序列化时要忽略的属性。可以用于排除不需要序列化/反序列化的属性,或者避免循环引用问题。
@JsonProperty指定在序列化/反序列化时使用的属性名称。可以用于将 Java 对象的属性名映射到 JSON 字段名,或者将 JSON 字段名映射到 Java 对象的属性名。
@JsonView
@JsonInclude控制在序列化时哪些字段需要包含。可以设置 Include.ALWAYS(默认值,始终包含)、Include.NON_NULL(null 值不包含)、Include.NON_EMPTY(null 值和空集合不包含)等选项。
@JsonCreator指定在反序列化时使用的构造函数或静态工厂方法。可以用于自定义对象的创建过程,或者处理 JSON 中缺少的属性。
@JsonGetter/@JsonSetter指定在序列化/反序列化时使用的方法。可以用于自定义属性的序列化/反序列化过程,或者处理 JSON 中缺少的属性。
@JsonUnwrapped指定在序列化/反序列化时展开嵌套对象。可以用于将嵌套对象的属性展开到当前对象中,或者将当前对象的属性展开到嵌套对象中。

关于@JsonFormat、@DateTimeFormat的区别,以及失效问题?

区别

  • @DateTimeFormat 是 Spring 框架中用于格式化日期的注解。
  • @DateTimeFormat 是Spring框架内部默认集成的json序列化工具。

失效问题

如果 @DateTimeFormat 在 JSON 中不生效,可能是因为它是一个用于 Spring MVC 的注解,而不是用于 JSON 序列化和反序列化的注解。在 JSON 中,日期通常以字符串的形式表示,而不是 Date 对象。因此,如果您希望将 JSON 中的日期字符串转换为 Date 对象,您可以使用 Jackson 库中的 @JsonFormat 注解。

如果您在表单中使用 @DateTimeFormat,它应该能够正常工作,因为 Spring MVC 会自动将表单提交的数据绑定到 Java 对象上,并使用 @DateTimeFormat 注解来格式化日期。请确保您在表单中使用的日期格式与您在 @DateTimeFormat 注解中指定的日期格式相匹配。

@JsonFormat常见用法

​ @JsonFormat(pattern = "yyyy-MM-dd HH:mm

", timezone = "GMT+8")

当前写法是将时间格式为yyyy-MM-dd HH:mm

格式,并且采用东八区作为时区标准

@DateTimeFormat 常见用法

​ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm

")

当前写法是将时间格式为yyyy-MM-dd HH:mm

格式,自动使用当前地区的时区标准