gpt4 book ai didi

java - 是否可以使 JsonFormat 日期时间的某些部分可选?

转载 作者:行者123 更新时间:2023-12-01 18:26:51 27 4
gpt4 key购买 nike

我有一个用秒部分定义的字段(即:“ss”),如下所示

@JsonProperty("date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss z")
private Date date;

是否可以将秒部分设为可选?这样以下日期字符串都可以工作:

  • “2020-02-13T16:02:11 EST”将解析为“Thu Feb 13 16:02:11 EST 2020”
  • “2020-02-13T16:02 EST”将解析为“Thu Feb 13 16:02 EST 2020”

我正在考虑类似的事情(但这不起作用......):“yyyy-MM-dd'T'HH:mm[:ss] z”

谢谢。

最佳答案

我得到了答案。

  1. 添加自定义反序列化器类“DateDeserializer.class”
  2. DateDeserializer.class 实现有或没有第二部分的模式。

附上代码示例:

@JsonDeserialize(using = DateDeserializer.class)
@JsonProperty("date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss z")




public class DateDeserializer extends StdDeserializer<Date> {

private static final SimpleDateFormat withSeconds = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss z");
private static final SimpleDateFormat withoutSeconds = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm z");

public DateDeserializer() {
this(null);
}

public DateDeserializer(Class<?> vc) {
super(vc);
}

@Override
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
String dateString = p.getText();
if (dateString.isEmpty()) {
//handle empty strings however you want,
//but I am setting the Date objects null
return null;
}

try {
return withSeconds.parse(dateString);
} catch (ParseException e) {
try {
return withoutSeconds.parse(dateString);
} catch (ParseException e1) {
throw new RuntimeException("Unable to parse date", e1);
}
}
}
}

关于java - 是否可以使 JsonFormat 日期时间的某些部分可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60216683/

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