Maison > développement back-end > C++ > Comment empêcher la désérialisation des dates dans JObject.Parse de Json.NET ?

Comment empêcher la désérialisation des dates dans JObject.Parse de Json.NET ?

Mary-Kate Olsen
Libérer: 2024-12-31 02:34:09
original
682 Les gens l'ont consulté

How to Prevent Date Deserialization in Json.NET's JObject.Parse?

Désactivation de la désérialisation des dates dans Json.NET avec JObject.Parse

Json.NET, une bibliothèque de gestion JSON populaire, offre des options de désérialisation flexibles. Par défaut, il tente de convertir les propriétés avec des valeurs DateTime en objets .NET DateTime. Cependant, dans certains scénarios, ce comportement peut être indésirable.

Considérez le code suivant :

string s = "2012-08-08T01:54:45.3042880+00:00";

JObject j1 = JObject.FromObject(new { time = s });

Object o = j1["time"];
Copier après la connexion

Dans cet exemple, o est une chaîne contenant la valeur date-heure d'origine. Cependant, si la chaîne JSON est transférée vers un autre programme et réanalysée à l'aide de JObject.Parse, le résultat change.

JObject j2 = JObject.Parse(j1.ToString());

Object o2 = j2["time"];
Copier après la connexion

Maintenant, o2 est un objet Date avec une représentation différente. Cet écart peut être problématique dans les situations où la valeur d'origine doit être préservée.

Solution

Pour désactiver la désérialisation de la date lors de l'utilisation de JObject.Parse, Json.NET fournit un approche alternative. Au lieu d'utiliser Parse directement, on peut utiliser un JsonReader pour configurer les options d'analyse.

using(JsonReader reader = new JsonTextReader(new StringReader(j1.ToString()))) {
    reader.DateParseHandling = DateParseHandling.None;
    JObject o = JObject.Load(reader);
}
Copier après la connexion

En définissant DateParseHandling sur None avant de charger le JSON dans un JObject, les valeurs date-heure seront traitées comme des chaînes, en préservant leur format original.

Notez que cette solution repose sur la méthode Load interne de JObject, qui est invoquée par Parse. Cette approche offre plus de contrôle sur le processus de désérialisation par rapport au comportement par défaut de Parse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal