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'来解析日期?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 在 Selenium WebDriver 中单击带有 Java 的按钮
如何在带有 NetBeans 的 Windows Java 项目中使用 HDF5