【问题标题】:spring.jackson.date-format property does not work properly for the date serialization with @Temporal annotationspring.jackson.date-format 属性不适用于带有 @Temporal 注释的日期序列化
【发布时间】:2019-06-23 12:33:26
【问题描述】:

我在 application.properties 文件中有以下属性:

spring.jackson.date-format=yyyy-MMM-dd

有对象定义要序列化:

public class InjuryDTO {

private Long id;

private String kindOfInjury;

private String muscle;

private String side;

private Integer outOfTraining;

private Date injuryDate;

private Long athleteId;

// getters and setters are omitted for brevity }

这是最初创建 InjuryDTO 对象的类:

@Entity
@Table(name = "INJURY")
public class Injury {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "INJURY_ID")
private Long id;

@Column(name = "KIND_OF_INJURY")
private String kindOfInjury;

@Column(name = "MUSCLE")
private String muscle;

@Column(name = "SIDE")
private String side;

@Column(name = "OUT_OF_TRAINING")
private Integer outOfTraining;

@Temporal(value = TemporalType.DATE)
@Column(name = "INJURY_DATE")
private Date injuryDate;

@ManyToOne
@JoinColumn(name = "ATHLETE_ID")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Athlete athlete;

// get,set-ters are removed for brevity 
}

所以,如果这个 JSON 属性发生反序列化:

"injuryDate":"2018-Jun-02"

Jackson 接受此字符串并将其转换为相应的 java.util.Date 对象,但是当序列化发生而没有注释 @Temporal(value = TemporalType.DATE) 注释时,服务器会返回以下 JSON 属性:"injuryDate":"2018-06-02"

问题是:为什么@Temporal 注解会影响JSON 中日期属性的实际表示?

【问题讨论】:

    标签: java spring-boot jackson application.properties


    【解决方案1】:

    试试这个:

     @Temporal(TemporalType.DATE)
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
     @Column(name="INJURY_DATE")
     private Date injuryDate;
    

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2013-05-20
      • 2015-01-06
      • 2011-12-07
      • 2014-11-11
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多