.net 6 Deserialize Json Dynamic

4 min read Jun 03, 2024
.net 6 Deserialize Json Dynamic

Désérialisation JSON dynamique avec .NET 6

Introduction

La désérialisation JSON est une tâche courante dans les applications .NET. Cependant, lorsqu'il s'agit de données JSON avec une structure dynamique ou inconnue à l'avance, la désérialisation classique avec des classes .NET peut devenir difficile. Heureusement, .NET 6 offre des mécanismes puissants pour gérer la désérialisation JSON dynamique.

Désérialisation dynamique avec JsonSerializer.Deserialize<object>

La méthode JsonSerializer.Deserialize<object> permet de désérialiser un JSON en un objet object, ce qui offre une grande flexibilité. Le code suivant illustre son utilisation :

using System.Text.Json;

// JSON de test
string jsonString = @"{""name"": ""John Doe"", ""age"": 30, ""address"": {""street"": ""123 Main St"", ""city"": ""Anytown""}}";

// Désérialisation en objet
object jsonObject = JsonSerializer.Deserialize(jsonString);

// Accès aux propriétés
string name = (string)jsonObject.GetType().GetProperty("name").GetValue(jsonObject);
int age = (int)jsonObject.GetType().GetProperty("age").GetValue(jsonObject);

Console.WriteLine($"Name: {name}, Age: {age}");

Désérialisation avec JsonDocument

La classe JsonDocument permet d'analyser le JSON en tant qu'arbre de nœuds et de naviguer à travers ses propriétés.

using System.Text.Json;

// JSON de test
string jsonString = @"{""name"": ""John Doe"", ""age"": 30, ""address"": {""street"": ""123 Main St"", ""city"": ""Anytown""}}";

// Analyser le JSON
using var document = JsonDocument.Parse(jsonString);

// Accéder aux propriétés
string name = document.RootElement.GetProperty("name").GetString();
int age = document.RootElement.GetProperty("age").GetInt32();

Console.WriteLine($"Name: {name}, Age: {age}");

Utilisation de System.Text.Json.Nodes

L'espace de noms System.Text.Json.Nodes introduit des classes pour manipuler des données JSON de manière plus intuitive.

using System.Text.Json.Nodes;

// JSON de test
string jsonString = @"{""name"": ""John Doe"", ""age"": 30, ""address"": {""street"": ""123 Main St"", ""city"": ""Anytown""}}";

// Désérialiser en un objet `JsonNode`
JsonNode jsonObject = JsonNode.Parse(jsonString);

// Accès aux propriétés
string name = jsonObject["name"].GetValue();
int age = jsonObject["age"].GetValue();

Console.WriteLine($"Name: {name}, Age: {age}");

Conclusion

.NET 6 offre une variété de solutions pour la désérialisation JSON dynamique, permettant de traiter les données JSON avec des structures variables et inconnues à l'avance. Les approches présentées dans cet article, notamment l'utilisation de JsonSerializer.Deserialize<object>, JsonDocument et System.Text.Json.Nodes, offrent une flexibilité et une puissance pour gérer les scénarios de désérialisation JSON dynamique.

Related Post


Featured Posts