【发布时间】:2011-08-07 08:54:26
【问题描述】:
我在 Order 类中有一个 Joda DateTime:
public class Order {
private DateTime creationTime;
...
}
我已按如下方式初始化我的映射器:
mapper.configure(
SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
当我序列化这个类时,我希望看到以 ISO-8601 格式序列化的 creationTime,如下所示
{
"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;
...
}
这似乎没什么区别。
谢谢。
附:有谁知道杰克逊邮件列表是否有效?我在用户邮件列表上发布了这个问题,但它没有显示在档案中。档案中的最后一篇文章日期为 2010 年 6 月 24 日。
【问题讨论】:
-
邮件列表正在运行,但由于某种原因 Codehaus 档案不起作用。
-
谢谢。我从邮件列表中得到了很多回复和帮助。
-
那么,解决办法是什么?
-
就我而言,这是解决方案stackoverflow.com/a/16379212/1266040
标签: java json jodatime jackson