web-dev-qa-db-fra.com

comment forcer netwtonsoft json serializer à sérialiser la propriété datetime à la chaîne?

J'utilise Json de Newtonsoft lorsque je sérialise une propriété date-heure, je reçois la réponse json comme:

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

je veux que ce soit dans une chaîne simple comme

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

alors que ma propriété de classe est DateTime, comment puis-je la forcer à la sérialiser en tant que chaîne, car nous pouvons ajouter un attribut pour changer le nom de la propriété comme

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

existe-t-il un moyen similaire de forcer une propriété DateTime à sérialiser en chaîne ??

40
vakas

D'après un article de James Newton-King sur StackOverflow, il semble que vous puissiez le faire.

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

Réponse référencée: Parsing JSON DateTime from Newtonsoft's JSON Serializer

Voici également la documentation sur Json.NET et les dates: Sérialisation des dates dans JSON

Voici un exemple d'utilisation de la propriété DateTimeFormat pour personnaliser la sortie:

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