java - 如何在Java中使用带有@JsonFormat的'dd-MMM-yyyy'来解析日期?

Posted

技术标签:

【中文标题】java - 如何在Java中使用带有@JsonFormat的\'dd-MMM-yyyy\'来解析日期?【英文标题】:How to parse date using 'dd-MMM-yyyy' with @JsonFormat in Java?java - 如何在Java中使用带有@JsonFormat的'dd-MMM-yyyy'来解析日期? 【发布时间】:2020-10-26 15:39:56 【问题描述】:

如何使用 Jackson 库中的 @JsonFormat 将日期解析为“dd-MMM-yyyy”格式?我正在使用 Java 8 和 Jackson 2.8.9。

示例: 我想得到:2019-06-22T00:00:00Z -> 22-Jun-2019

我正在使用

@JsonFormat(pattern = "dd-MMM-yyy")
private Date myDate;

我收到一个异常:

JSON 解析错误:无法从字符串“2019-06-22T00:00:Z”反序列化 java.util.Date 类型的值:预期格式“dd-MMM-yyyy”

我认为我可以将该日期解析为预期的格式,但看起来不可能以这种方式。你有什么建议我该怎么做?我正在寻找最好的方法。我可以使用这个注解吗?

【问题讨论】:

您使用的是 java 8+ 版本吗? 您的问题中有一种格式,代码示例中有另一种格式,但它们都不匹配输入字符串。如果您在字符串中有日期以开始,则必须首先解析传入的字符串。一旦你将它表示在一个对象中,你就可以按照你想要的方式格式化输出。但我不确定这是你想要达到的目标。 @Govi S:我在 Java 8 上 @DanielBarbarian:对不起。这是我的代码中的一个错误,现在它的格式很好。这个 myDate 变量是模型的一部分,我正在寻找一种无需其他方法或对象即可进行即时解析的方法。 顺便说一句,我建议您向您的数据发布者介绍ISO 8601 标准格式,以便在将日期时间值作为文本交换时使用。 【参考方案1】:

使用这个库 dateFormat

 dateFormat('your date variable', "mm/dd/yyyy")

总有办法

【讨论】:

【参考方案2】:

由于您使用的是 java 8,您应该使用 LocalDate 而不是旧 API。

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MMM-yyyy")
private final LocalDate localDate;

我还可以使用Date API 进行反序列化。如果它不起作用,请尝试更新 jackson artifact。

【讨论】:

我做的和你一样,但是我有一个例外:java.time.format.DateTimeParseException: Text '2019-06-22T00:00:00Z' could not在索引 2 处解析 - 我添加了依赖项 jackson-datatype-jsr310 并使用 JavaTimeModule() 创建了 ObjectMapper Bean。 尝试更新 Jackson。

以上是关于java - 如何在Java中使用带有@JsonFormat的'dd-MMM-yyyy'来解析日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个java项目中使用带有共享对象的jar文件

如何使用 jQuery 在 Selenium WebDriver 中单击带有 Java 的按钮

如何在带有 NetBeans 的 Windows Java 项目中使用 HDF5

如何使用扫描仪在java中将输入作为带有空格的字符串

如何使用 netbeans 将 javadb 或 hsqldb 嵌入到带有休眠的 java 应用程序中?

如何在 Java 中创建带有连接按钮的 ButtonGroup?