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 :
MyAccount
. MyAccount
à l'aide du code suivant : <code class="language-csharp">var rootObject = JsonConvert.DeserializeObject<MyAccount>(json);</code>
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>
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>
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!