Java Jackson JSON未正确序列化Joda DateTime
我在Order类中有一个Joda DateTime:Java Jackson JSON未正确序列化Joda DateTime,java,json,jodatime,jackson,Java,Json,Jodatime,Jackson,我在Order类中有一个Joda DateTime: public class Order { private DateTime creationTime; ... } 我已按如下方式初始化映射器: mapper.configure( SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 当我序列化这个类时,我希望看到creationTime以ISO-8601格式序列化,如下所示 {
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;
...
}
这似乎没有什么区别
谢谢
还有,有人知道杰克逊的邮件列表是否有效吗?我在用户邮件列表上发布了这个问题,但它没有显示在档案中。档案馆的最后一篇文章日期是2010年6月24日。这似乎对我起了作用: 基本上,我们的想法是创建一个类,该类使用一个被高估的序列化方法扩展
org.codehaus.jackson.map.JsonSerializer
:
public void serialize(DateTime value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException {
gen.writeString(formatter.print(value));
}
然后,只需使用该自定义序列化程序代替
DateTimeSerializer
邮件列表即可,但由于某些原因,Codehaus存档无法工作。谢谢。我从邮件列表中得到了很多回复和帮助。那么,解决方案是什么呢?在我的案例中,这是一个解决方案,现在有一个jackson数据类型joda模块-我在这里发布了一些配置示例: