gpt4 book ai didi

java - Jackson - 反序列化不同的日期格式

转载 作者:行者123 更新时间:2023-12-01 08:57:28 35 4
gpt4 key购买 nike

我正在使用 JsonDeserializer 来格式化我的日期,如下所示:

public class CustomDateMappingDeserialize extends JsonDeserializer<Date>{

@Override
public Date deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext) throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = paramJsonParser.getText();
try {
Date formattedDate= format.parse(date);
return formattedDate;
} catch (ParseException e) {
throw new RuntimeException(e);
}

}

}

但问题是我必须定义此处修复的格式并且我有许多不同的日期格式。

我们可以做这样的事情吗:

@JsonDeserialize(using = CustomDateMappingDeserialize.class, format ="yyy-dd-mm")
public void setDate(Date date) {
this.date = date;
}

而不是在自定义类中定义它?

任何帮助/指示将不胜感激。

最佳答案

对于之前类似性质的要求,我使用了多解析器选项,如文档 here 所示。 .

按照类似的思路,下面的自定义类是一个示例

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

public class CustomDeserializer extends JsonDeserializer<Date> {
private static final String[] DATE_FORMATS = new String[] { "MMM dd, yyyy HH:mm:ss", "MMM dd, yyyy" };

@Override
public Date deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
throws IOException, JsonProcessingException {
// TODO Auto-generated method stub
if (paramJsonParser == null || "".equals(paramJsonParser.getText()))
return null;
String date = paramJsonParser.getText();

for (String format : DATE_FORMATS) {
try {
return new SimpleDateFormat(format, Locale.US).parse(date);
} catch (ParseException e) {
}
}
return null;
}
}

编辑:

您还可以使用建议 here 中概述的其他库使用 MultiDateTimeParsers。

关于java - Jackson - 反序列化不同的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41954561/

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