杰克逊使用自定义日期格式错误地反序列化Joda日期

德米特里·扎胡斯塔(Dzmitry Zahusta)

我正在尝试使用自定义日期格式对非常简单的对象进行序列化和反序列化:

public class DateTimeTest {
    private static final String DATE_PATTERN = "yyyyMMdd";

    public static DateTime date = DateTime.now();

    public static void main(String[] args) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JodaModule());
        mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        ObjectWriter writer = mapper.writer();

        String str = writer.writeValueAsString(new Domain());
        System.out.println(str);

        ObjectReader reader = mapper.reader(Domain.class);
        Domain domain = reader.readValue(str);

        System.out.println(domain.getDate());
    }

    private static class Domain {
        @JsonFormat(pattern = DATE_PATTERN)
        private DateTime date;

        public Domain() {
            this.date = DateTime.now();
        }

        public DateTime getDate() {
            return date;
        }

        public void setDate(DateTime date) {
            this.date = date;
        }
    }
}

在执行main方法时,我期望得到类似于以下内容的信息:

“ date”:“ 20151117”
20151117

但不幸的是得到以下信息:

{“ date”:“ 20151117”}
20151117 -01-01T00:00:00.000 + 03:00(年份不正确

似乎Jackson对于对象反序列化忽略了@JsonFormat批注,并将字符串作为ISO-8601表示法中的日期。有人知道解决办法吗?

<jackson.version>2.5.4</jackson.version>
<jodatime.version>2.8.1</version>

更新:如果我将日期模式更改为“ dd / MM / yyyy”,那么我什至开始出现错误“ IllegalArgumentException:无效格式”。因此,可以肯定的是,杰克逊忽略了反序列化的日期模式。

德米特里·扎胡斯塔(Dzmitry Zahusta)

根据Jackson发行说明,仅从2.6.0版本添加了对Joda @JsonFormat(pattern = ...)反序列化的支持。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

杰克逊日期反序列化错误

使用杰克逊可自定义序列化和反序列化

如何自定义序列化杰克逊日期,@JsonSerialize不工作

杰克逊自定义日期序列化器

使用杰克逊反序列化日期包含错误的时间

杰克逊自定义序列化和反序列化

杰克逊不能反序列化日期

杰克逊自定义反序列化器无法在春季启动中工作

杰克逊:反序列化的自定义XML中的属性POJO

杰克逊:反序列化map <String,Object>到自定义嵌套Pojo

如何在杰克逊中编写自定义属性反序列化器

具有自定义条件的杰克逊多态反序列化

杰克逊:如何反序列化嵌套的自定义地图和列表?

杰克逊反序列化:自定义对象工厂

杰克逊自定义序列化对象

杰克逊反序列化不是在自定义解串器调用反序列化

杰克逊日期反序列化JSON文件中的错误

杰克逊自定义序列化器JSON格式

使用杰克逊的对象数组的自定义序列化器

杰克逊日期反序列化-每月的“无效”日期

杰克逊反序列化错误:MismatchedInputException

杰克逊时间戳反序列化错误

用杰克逊反序列化为自定义对象的HashMap

杰克逊在反序列化期间更改日期

使用杰克逊将自定义反序列化类添加到已经存在的@JsonDeserialize批注中

使用杰克逊反序列化包含@JsonFormat(shape = JsonFormat.Shape.ARRAY)和自定义对象的json

杰克逊使用泛型反序列化

杰克逊(Jackson)如何在自定义序列化器/反序列化器中检索父bean

杰克逊序列化和反序列化的DateTime自/至WCF日期时间