gpt4 book ai didi

java - 如何动态自定义日期格式的反序列化器?

转载 作者:行者123 更新时间:2023-11-30 05:45:48 27 4
gpt4 key购买 nike

我正在开发自定义 JSON 反序列化器并具有以下类

public class yyyy_MM_dd_DateDeserializer extends StdDeserializer <LocalDate> {

public yyyy_MM_dd_DateDeserializer() {
this(null);
}

public yyyy_MM_dd_DateDeserializer(Class t) {
super(t);
}

@Override
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
String dateString = jsonParser.getText();
LocalDate localDate = null;
try {
localDate = LocalDate.parse(dateString, "yyyy-MM-dd");
} catch (DateTimeParseException ex) {
throw new RuntimeException("Unparsable date: " + dateString);
}
return localDate;
}
}

在我的请求类中

@Valid
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate endDate;

它工作正常,但我想知道是否可以动态传递日期格式。而不是在 yyyy_MM_dd_DateDeserializer 中进行硬编码。我想从请求类传递日期格式,以便我的反序列化器更加通用,任何人都可以通过发送所需的格式来使用它。

最佳答案

我认为你太努力了,无法得到你想要的东西。有一种更简单的方法,无需编写自己的解串器。看this question 。本质上它看起来像

@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="EEE MMM dd HH:mm:ss Z yyyy")
@JsonProperty("created_at")
ZonedDateTime created_at;

你只需戴上自己的面具即可。另外,我曾经有一个解析未知格式日期的任务,本质上我需要解析任何有效的日期。这是一篇描述如何实现它的想法的文章:Java 8 java.time package: parsing any string to date 。您可能会发现它很有用

关于java - 如何动态自定义日期格式的反序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com