2012-02-07 174 views
2

我在试图让杰克逊序列化/反序列化从ASP.NET服务发送的JSON日期字符串时遇到了一些困难。该字符串的格式如下:如何使用Jackson序列化/反序列化ASP.NET JSON日期?

/Date(1234567890123)/ 

输出的我从服务器获取类型的一个简单的例子是这样的:

{ 
    "name" : "Bob Marley", 
    "birthdate" : "/Date(1234567890123)/" 
} 

我怎样才能得到杰克逊的日期转换一个Java日期对象?有没有办法做到这一点,而不必编写自定义的串行器/解串器?

+0

你想要做什么而不是写一个自定义的反序列化器?它没有那么多的工作:http://stackoverflow.com/questions/9184477/gson-throws-exception-parsing-empty-date-field/9185368#9185368你可以改变结果对象,反序列化为'字符串'和写一个在访问时解析字符串的getter。我不认为这更优雅。 – 2012-02-07 23:45:49

+1

如果有人需要代码,请看这个问题:http://stackoverflow.com/questions/14906981/parsing-asp-net-mvc-returned-date-using-jackson-json-library-in-java。尽管最终我已经切换到服务器上的更快的JSON库,也提供了ISO8601格式 - http://stackoverflow.com/questions/14973286/asp-net-mvc-json-datetime-serialization-conversion-to-utc – kape123 2013-03-27 13:08:16

回答

3

最好的办法是写一个自定义的解串器。或者,可以将日期的字符串表示形式存储在您的bean中,但可以使用DateFormat实例提供一个替代getter,将字符串转换为日期。第一个选项更清洁,更高效。

See question previously asked here on SO

1

我认为ASP.NET服务正在为日期生成一个奇怪的值,如果可以的话,会改变它。如果我不能,那么编写一个客户解串器是一条可行的路。