как заставить netwtonsoft json serializer сериализовать свойство datetime в строку? - PullRequest
40 голосов
/ 06 октября 2011

Я использую JSON от Newtonsoft когда я сериализую свойство даты и времени, я получаю ответ json как:

..."CreatedOn":"\/Date(1317303882420+0500)\/",...

я хочу, чтобы оно было в простой строке как

..."createdOn": "2011-05-05 14:03:07", ...

в то время как моим свойством класса является DateTime, как я могу заставить сериализовать его как строку, так как мы можем добавить атрибут, чтобы изменить имя свойства как

  [JsonProperty("id")]
        public int ProductID { get; set; }

существует ли подобный способ заставить свойство DateTime сериализоваться в строку ??

1 Ответ

64 голосов
/ 06 октября 2011

Из сообщения, сделанного Джеймсом Ньютоном-Кингом в StackOverflow, похоже, что вы можете сделать это.

string isoJson = JsonConvert.SerializeObject(this, new IsoDateTimeConverter());
// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}    

Ссылочный ответ: Анализ JSON DateTime из сериала JSON Newtonsoft

Также вот документация по Json.NET и датам: Сериализация дат в JSON

Вот пример использования свойства DateTimeFormat для настройки вывода:

return JsonConvert.SerializeObject(this, Formatting.None, new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
...