gpt4 book ai didi

java - 如何在 Spring 中捕获 @JsonFormat 异常并优雅地处理它以处理有效负载?

转载 作者:行者123 更新时间:2023-12-02 10:08:55 25 4
gpt4 key购买 nike

我有一个 Spring 应用程序,在其中使用 @JsonFormat 注释来反序列化日期格式。但是,当我发送一组元素时,即使其中一个条目的日期无效,整个有效负载也会失败。

有没有一种方法可以通过优雅地处理此异常来超越这个问题,方法是用默认值替换失败的日期或忽略该数组条目。

jackson.版本:2.7.5,spring.version: 5.0.0.RELEASE

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
private Date date;

最佳答案

您可以编写自定义 deserializer为您的类(class)设置默认值,以防出现问题。像这样的东西:

public class MyJsonDateDeserializer extends JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
String date = jsonParser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
return new Date();
}

}

}

然后在你的类里面你可以做这样的事情:

class MyClass {
//...Fields

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
@JsonDeserialize(using = MyJsonDateDeserializer.class)
private Date date;

//...Fields
}

如果您知道它的值并不总是必需的,您还可以在您的类上添加@JsonIgnoreProperties(ignoreUnknown = true)

关于java - 如何在 Spring 中捕获 @JsonFormat 异常并优雅地处理它以处理有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55137143/

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