spring-boot 中的 json date format

2022-09-01 22:43:06

我正在使用spring-boot,并且我有一个实体类,定义如下

import org.joda.time.LocalDateTime;
@Entity
public class Project {

    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
    private LocalDateTime start_date;
...
...
}

将此类转换为 JSON 时,该字段将转换为以下字符串表示形式

{"start_date":[2014,11,15,0,0,0,0],...., ...}

我希望将 json 响应设为 .yyyy-MM-dd

我尝试了注释,也没有帮助。@DateTimeFormat(iso = ISO.DATE)

有没有一种简单的方法可以将其转换为正确的json格式?


答案 1

要将日期格式设置为以下三项操作,您需要执行三项操作:yyyy-MM-dd

  1. 添加对 的依赖关系。从您目前获得的输出来看,我认为您可能已经具有这种依赖性。com.fasterxml.jackson.datatype:jackson-datatype-joda
  2. 将 Jackson 配置为不通过将日期格式设置为时间戳,方法是将其添加到文件中。spring.jackson.serialization.write-dates-as-timestamps: falseapplication.properties
  3. 使用 注释字段或 getter 方法LocalDataTime@JsonFormat(pattern="yyyy-MM-dd")

注意:您需要使用Spring Boot 1.2才能使步骤2正常工作。


答案 2

没有额外的依赖性 - 我唯一要做的就是:

  1. 注意将来自客户端的发送日期作为字符串对象,格式yyyy/MM/dd

  2. 在 Spring Boot 应用程序中,在具有相同格式的日期字段上添加注释


public class Foo
{
     @JsonFormat(pattern = "yyyy/MM/dd")
     private Date dueDate;
}

使用Spring Boot 2.3.5版本


更新

另一个选项,而不是步骤 2,修改 application.properties 文件,在那里添加任何 Date 对象的格式:

spring.jackson.date-format=yyyy/MM/dd


推荐