【问题标题】:Unable deserialize value of type `java.time.LocalDate` from String [duplicate]无法从字符串中反序列化“java.time.LocalDate”类型的值[重复]
【发布时间】:2019-11-24 04:01:37
【问题描述】:

由于以下异常,我无法反序列化 Java-8-LocatDate

JSON 解析错误:无法从字符串“15/09/1978”反序列化类型为 java.time.LocalDate 的值:无法反序列化 java.time.LocalDate (java.time.format .DateTimeParseException) 文本“15/09/1978”无法在索引 0 处解析;

包含Date的JSON请求对象如下

[ "employeeName" : "ABC XYZ", “出生日期”:“1978 年 9 月 15 日” ]

我还尝试通过引用 URL Deserialize Java 8 LocalDateTime with JacksonMapper 来实现日期反序列化 但是,下面的代码行

@DateTimeFormat(iso = DateTimeFormatter.ofPattern("dd/mm/yyyy")) 给 以下编译错误

类型不匹配:无法从 DateTimeFormatter 转换为 DateTimeFormat.ISO
在行中

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="EMP_ID", updatable = false, nullable = false)
private long empId;

@Column(name="BIRTH_DATE")
//below line gave compilation error ==> Type mismatch: cannot convert from DateTimeFormatter to DateTimeFormat.ISO
@DateTimeFormat(iso = DateTimeFormatter.ofPattern("dd/mm/yyyy"))
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/mm/yyyy")
private LocalDate birthDate;

请帮我解决这个问题, 提前致谢

【问题讨论】:

标签: java json spring-boot jpa jackson


【解决方案1】:

我的建议是:

以毫秒为单位发送日期,并以毫秒为单位更改该字符串。

public class DateConverter {

    public static Date getDate(String sessionDate) {
        Long sessionOnDate = Long.parseLong(sessionDate);
        Date date = new Date(sessionOnDate);
        return date;
    }

    public static Long getTimeinMilliseconds(String myDate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = sdf.parse(myDate);
        long millis = date.getTime();
        return millis;
    }

}

在实体中你可以简单地拥有:

public class SessionDynamic
{
private Date sessionDate;
}

让我知道:)

【讨论】:

  • 请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
  • 当然:) 我会保留这个并用新的编辑@OleV.V. 更新答案
  • 我用过 - @DateTimeFormat(pattern = "DD/MM/YYYY")。我对现代 Java 日期和时间 API java.time 知之甚少。我也想使用@dateTimeFormat 反序列化字符串中的值java.time.LocalDate。请帮忙
猜你喜欢
  • 2016-08-25
  • 2019-08-09
  • 2017-03-24
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 2020-07-26
  • 2016-01-02
相关资源
最近更新 更多