gpt4 book ai didi

java - Jackson JSON 没有正确序列化 Joda DateTime

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:07 25 4
gpt4 key购买 nike

我在 Order 类中有一个 Joda DateTime:

public class Order {
private DateTime creationTime;
...
}

我已经按如下方式初始化了我的映射器:

mapper.configure(
SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);

当我序列化这个类时,我希望看到 creationTime 以 ISO-8601 格式序列化如下

{
"creationTime" : "2011-01-01T09:00:00.000-04:00"
}

这在我的单元测试中运行良好。但是,在我的 Web 应用程序中,完全相同的代码序列化所有 DateTime 字段:

{
"creationTime" : {
"year" : 2011,
"dayOfMonth" : 17,
"dayOfWeek" : 7,
"era" : 1,
"dayOfYear" : 107,
"weekOfWeekyear" : 15,
"weekyear" : 2011,
"monthOfYear" : 4,
"yearOfEra" : 2011,
"yearOfCentury" : 11,
"centuryOfEra" : 20,
"millisOfSecond" : 590,
"millisOfDay" : 40311590,
"secondOfMinute" : 51,
"secondOfDay" : 40311,
"minuteOfHour" : 11,
"minuteOfDay" : 671,
"hourOfDay" : 11,
"millis" : 1303053111590,
"zone" : {
"fixed" : false,
"uncachedZone" : {
"cachable" : true,
"fixed" : false,
"id" : "America/New_York"
},
"id" : "America/New_York"
},
"chronology" : {
"zone" : {
"fixed" : false,
"uncachedZone" : {
"cachable" : true,
"fixed" : false,
"id" : "America/New_York"
},
"id" : "America/New_York"
}
}
}

我错过了什么?在这两种情况下,我都在类路径中包含了 jackson-core-asl-1.7.6.jar 和 jackson-mapper-asl-1.7.6.jar。

在一些在线示例中,我看到了有关 DateTime 的注释。我不知道这是否需要,但我从未尝试过。见下文:

public class Order {
@JsonSerialize(using=DateTimeSerializer.class)
private DateTime creationTime;
...
}

这似乎没有什么区别。

谢谢。

附言有谁知道 Jackson 邮件列表是否有效?我在用户邮件列表上发布了这个问题,但它没有显示在文件中。文件中的最后一篇文章日期为 2010 年 6 月 24 日。

最佳答案

这似乎对我有用: How to serialize Joda DateTime with Jackson JSON processer?

基本上,我们的想法是创建一个类来扩展 org.codehaus.jackson.map.JsonSerializer 并重载序列化方法:

public void serialize(DateTime value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException {
gen.writeString(formatter.print(value));
}

然后只需使用该自定义序列化程序代替 DateTimeSerializer

关于java - Jackson JSON 没有正确序列化 Joda DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694678/

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