Je voulais désérialiser une chaîne/un objet JSON et l'objet JSON contient des champs date-heure.Désérialisation JSON de Datetime jusqu'à millisecondes dans C#
Ma fonction désérialiser objet JSON est-
public static T ParseJSONToObject<T>(string entity)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(entity, new IsoDateTimeConverter{
DateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss.fffffff"
});
}
Je voulais que les champs date-heure devraient convertir jusqu'à millisecondes et s'il n'y a pas de valeur en millisecondes, alors il doit montrer de zéro jusqu'à 7 chiffres. Ci-dessous mon JSON object-
[
{"Key": "PendingDate", "Value": "2017-06-15T13:58:00"},
{"Key": "OwnerId", "Value": "xyz"},
{"Key": "ProductList", "Value": "0"},
{"Key": "CreatedDate", "Value": "2017-06-16T09:11:21.678544"},
{"Key": "ModifiedDate", "Value": "2017-06-16T09:11:21.678544"}
]
Mais quand je passe cet objet à ma fonction d'analyseur de JSON il ne revient pas les valeurs date-heure dans mon format souhaité.
Mais quand je l'utilise ci-dessous code pour désérialiser une seule chaîne JSON, il est donner output- correct
var json = "{\"timestamp\":\"2017-06-15T13:58:00.000\"}";
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
var r = ((DateTime)dict["timestamp"]).ToString("O");
Et la sortie être-
2017-06-15T13:58:00.0000000
C'est la sortie que je avais besoin mais je ne suis pas sûr de la façon dont j'ai besoin de mettre en œuvre avec ma fonction d'analyseur JSON.
Vous avez un éventail de dictionnaires, pas un seul dictionnaire. De plus, le type 'DateTime' n'a aucun format. C'est une valeur binaire comme 'int' et' double'. Votre * code *, cependant, convertit la date en une * chaîne *. Que demandez-vous après tout cela? –
Code postal qui montre réellement le problème. Ce que vous avez posté suggère que vous avez confondu les représentations de chaînes avec un format DateTime (inexistant). BTW ISO8601 est la valeur par défaut pour JSON.NET. Vous n'avez pas besoin de le spécifier –