[C#][ASP.NET MVC] 序列化日期為 Json 時踩到的地雷

今天幫同事找問題時碰到 Mvc 序列化 Json 的地雷,問題出在 Controller.Json() 是使用 JavaScriptSerializer 序列化物件成 Json 字串,日期經轉換後無法讓前端 JavaScript 直接套用 new Date()

原 Json 方法

程式碼:

回傳:

首先使用預設的 Controller.Json() 來測試一次的結果如上,微軟預設的 JavaScriptSerializer 將日期轉換成 /Date(1545478289178)/,如果直接將轉換結果塞到 new Date() 會噴錯誤訊息。

複寫 Json 方法

程式碼:

回傳:

上面的程式碼 override 掉原本 Controller.Json() 並採用 Json.NET 這個高效能的 Json 序列化套件,它將日期格式依照 ISO 8601 標準轉換成 2018-12-22T19:46:31.9098858+08:00,效能也比原本的 JavaScriptSerializer 來的高(測試數據),接著丟到 new Date() 試試果然成功。