Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson-反序列化不同的日期格式_Java_Jackson - Fatal编程技术网

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

Java Jackson-反序列化不同的日期格式,java,jackson,Java,Jackson,我使用JsonDeserializer将我的日期格式化如下: public class CustomDateMappingDeserialize extends JsonDeserializer<Date>{ @Override public Date deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext) throws IOExcepti

我使用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);
            }

    }

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


非常感谢您的帮助/指点。

对于之前类似性质的需求,我使用了文档中的多解析器选项

在类似的行之后,下面的自定义类就是一个示例

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;
    }
}
import java.io.IOException;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.Locale;
导入com.fasterxml.jackson.core.JsonParser;
导入com.fasterxml.jackson.core.JsonProcessingException;
导入com.fasterxml.jackson.databind.DeserializationContext;
导入com.fasterxml.jackson.databind.JsonDeserializer;
公共类CustomDeserializer扩展JsonDeserializer{
私有静态最终字符串[]日期\格式=新字符串[]{“MMM dd,yyyy HH:mm:ss”,“MMM dd,yyyy”};
@凌驾
公共日期反序列化(JsonParser paramJsonParser,反序列化上下文paramDeserializationContext)
抛出IOException、JsonProcessingException{
//TODO自动生成的方法存根
if(paramJsonParser==null | |“”.equals(paramJsonParser.getText())
返回null;
字符串日期=paramJsonParser.getText();
for(字符串格式:日期格式){
试一试{
返回新的SimpleDataFormat(格式,Locale.US).parse(日期);
}捕获(解析异常){
}
}
返回null;
}
}
编辑:

您还可以使用multidatetimeparser使用建议中概述的其他库

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;
    }
}