2012-02-07 175 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服務正在爲日期生成一個奇怪的值,如果可以的話,會改變它。如果我不能,那麼編寫一個客戶解串器是一條可行的路。