Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 2.2.2 ObjectMapper日期格式不';我不为Joda DateTime工作_Java_Json_Jackson - Fatal编程技术网

Java Jackson 2.2.2 ObjectMapper日期格式不';我不为Joda DateTime工作

Java Jackson 2.2.2 ObjectMapper日期格式不';我不为Joda DateTime工作,java,json,jackson,Java,Json,Jackson,在我的项目中,我有以下ObjectMapper类: public class ObjectMapperImpl extends ObjectMapper { public ObjectMapperImpl() { super(); configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); registerModule(new JodaModule());

在我的项目中,我有以下ObjectMapper类:

public class ObjectMapperImpl extends ObjectMapper {
    public ObjectMapperImpl() {
        super();
        configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        registerModule(new JodaModule());
        setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    }
}
如您所见,我正在使用JodaModule对org.joda.time.DateTime进行序列化/反序列化

但我的日期格式在序列化过程中不适用,它生成的日期如下:
2013-06-15T09:50:08.541Z

我看了一眼JodaModule,我发现它如下所示

addSerializer(DateTime.class, new DateTimeSerializer());

public final class DateTimeSerializer
    extends JodaSerializerBase<DateTime>
{
    public DateTimeSerializer() { super(DateTime.class); }

    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonGenerationException
    {
        if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
            jgen.writeNumber(value.getMillis());
        } else {
            jgen.writeString(value.toString());
        }
    }

    @Override
    public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)
    {
        return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                ? "number" : "string", true);
    }
}
日期格式是硬编码的,是ISO格式

因此,我想在ObjectMapper配置中为joda的DateTime设置自己的dateformat是不可能的

这是否意味着唯一的解决方案是摆脱JodaModule并创建自定义序列化程序/反序列化程序以支持日期格式

寻找你的机会。
谢谢。

Java的
DateFormat
和Joda Time的
DateTimeFormatter
不一样,所以这很正常;joda time插件不是提供了一种指定日期时间格式化程序的方法吗?我知道,但将joda DateTime转换为常规日期,然后应用标准java日期格式化程序很容易。无论如何,它看起来仍然没有api来配置它。我想一个补丁是受欢迎的;)在我看来,您应该能够配置JodaModule本身,然后像往常一样简单地注册它,是的,也许这是一件好事
@ToString
    public String toString() {
        return ISODateTimeFormat.dateTime().print(this);
    }