Maison > développement back-end > C++ > Comment désérialiser des données JSON en C# avec des attributs manquants à l'aide de JSON.NET ?

Comment désérialiser des données JSON en C# avec des attributs manquants à l'aide de JSON.NET ?

DDD
Libérer: 2025-01-26 16:41:11
original
499 Les gens l'ont consulté

How to Deserialize JSON Data into C# with Missing Attributes Using JSON.NET?

Utilisez JSON.NET pour désérialiser les données JSON en C#

Désérialiser des données JSON dans un objet C# peut être difficile, en particulier lorsque la structure JSON peut contenir des propriétés manquantes. Cet article fournit une solution pour désérialiser les données JSON vers une classe C# même si certains champs sont manquants dans la source JSON.

Scène :

Considérez une classe C# MyAccount avec plusieurs propriétés, dont certaines peuvent ne pas apparaître dans les données JSON en cours de désérialisation. L'objectif est de renseigner les données de l'instance MyAccount à partir de JSON sans extraire manuellement chaque valeur.

Bonnes pratiques :

L'approche recommandée consiste à utiliser une bibliothèque de désérialisation JSON telle que JSON.NET. JSON.NET fournit une classe JsonConvert qui peut désérialiser les données JSON en objets fortement typés.

Pour utiliser JSON.NET :

  1. Installez le package JSON.NET NuGet dans votre projet C#.
  2. Créez une classe C# qui représente la structure de données JSON. Dans ce cas, c'est MyAccount.
  3. Désérialisez une chaîne JSON en une instance MyAccount à l'aide du code suivant :
<code class="language-csharp">var rootObject = JsonConvert.DeserializeObject<MyAccount>(json);</code>
Copier après la connexion

Gestion des données manquantes :

Pour gérer les données manquantes dans une source JSON, vous pouvez utiliser l'attribut DefaultValue sur une propriété de classe C#. Par exemple, pour l'attribut PasswordExpire :

<code class="language-csharp">[JsonProperty(PropertyName = "passwordexpired")]
[DefaultValue(typeof(DateTime), "0001-01-01T00:00:00")]
public DateTime PasswordExpire { get; set; }</code>
Copier après la connexion

Cet attribut définit la valeur par défaut de l'attribut PasswordExpire sur "0001-01-01T00:00:00" s'il n'existe pas dans les données JSON. Cela garantit que l'instance MyAccount est remplie avec des données valides même si certains champs sont manquants.

Exemple :

En utilisant l'exemple JSON et MyAccount classes fournies dans la question :

<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(json);

Console.WriteLine(myAccount.UserID); // "rjohnson"
Console.WriteLine(myAccount.GivenName); // "Robert"
Console.WriteLine(myAccount.PasswordExpire); // "2009-10-31 04:15:50" (从JSON解析)
Console.WriteLine(myAccount.EmployeeID); // "999777666"</code>
Copier après la connexion

En tirant parti de JSON.NET et de l'attribut DefaultValue, vous pouvez désérialiser efficacement les données JSON en un objet C#, même si la structure JSON contient des attributs manquants.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal