Принуждение сериализатора Json к созданию определенного формата datetime (yyyy-mm-ddThh: mm: ss.msmsmsZ)


MyClass theSession = new MyClass() {
    accountId = 12345,
    timeStamp = DateTime.Now,
    userType = "theUserType"
};

System.Web.Script.Serialization.JavaScriptSerializer Json = new System.Web.Script.Serialization.JavaScriptSerializer();
Response.Write(Json.Serialize(theSession));

Производит:

{"accountId":12345,"timeStamp":"/Date(1268420981135)/","userType":"theUserType"}

Как я могу представить дату как:

"timestamp":"2010-02-15T23:53:35.963Z"

?

3 3

3 ответа:

Даже если вы реализуете JavaScriptConverter, вам придется обернуть строку в объект. К счастью, вокруг него есть Хак, описанный здесь:

Http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/

Вам нужно сделать JavaScriptConverter класс и зарегистрировать его с помощью RegisterConverters метод.

Я рекомендую вам (и всем остальным с этой проблемой) просто переключиться на ServiceStack.Библиотека текста-это как 30 секунд для интеграции, и вы решите кучу других проблем. Взгляните на этот вопрос, опубликованный и отвеченный мной:

ASP.NET в MVC, JSON и Датавремя сериализации преобразование мирового