使用杰克逊注释将LocalDate转换为“ dd / MM / yyyy”

时间:2019-07-01 09:25:21

标签: java rest jackson jackson-databind localdate

我正在使用:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")
private LocalDate date;

但是它不起作用...

我在soapUi中收到的是:

"date":    {
  "year": 1995,
  "month": "OCTOBER",
  "dayOfMonth": 10,
  "dayOfWeek": "TUESDAY",
  "era": "CE",
  "dayOfYear": 283,
  "leapYear": false,
  "monthValue": 10,
  "chronology":   {
     "id": "ISO",
     "calendarType": "iso8601"
  }

},

我不需要对象映射器吗?

有没有一种方法可以只使用注释?

2 个答案:

答案 0 :(得分:0)

要反序列化Java8的LocalDateTime

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateOfBirth;

在项目中使用以下依赖项时。

Maven

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.9.7</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.datatype</groupId>
   <artifactId>jackson-datatype-jsr310</artifactId>
   <version>2.9.7</version>
</dependency>

成绩

compile "com.fasterxml.jackson.core:jackson-databind:2.9.7"
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7"

不需要反序列化器的其他实现。

答案 1 :(得分:-1)

具体地说,@JsonFormat允许您指定如何根据SimpleDateFormat格式设置日期和日历值的格式。 代替使用LocalDate,使用Date然后将语言环境指定为该注释的参数。

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "en_GB")
public Date getCurrentDate() {
    return new Date();
}

Guide to @JsonFormat in Jackson