C# Programming

Analyse JSON efficace en C#

Spread the love

JSON (JavaScript Object Notation) est un format léger d’échange de données couramment utilisé dans les applications web. C# offre plusieurs moyens d’analyser efficacement les données JSON, simplifiant l’intégration avec les API web et autres systèmes basés sur JSON. Cet article explore trois méthodes populaires, en soulignant leurs forces et leurs faiblesses.

Table des matières

Analyse JSON avec JsonConvert.DeserializeObject()

La bibliothèque Newtonsoft.Json est une bibliothèque JSON largement utilisée et très performante pour .NET. Elle offre la méthode JsonConvert.DeserializeObject() pour une analyse JSON efficace. Vous devrez l’installer via le gestionnaire de paquets NuGet (« Newtonsoft.Json »).


using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""John Doe"",
            ""Age"": 30,
            ""City"": ""New York""
        }";

        Person person = JsonConvert.DeserializeObject<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

Ce code définit une classe Person correspondant à la structure JSON. JsonConvert.DeserializeObject<Person>(jsonString) désérialise le JSON en un objet Person, permettant un accès facile à ses propriétés. C’est généralement l’approche la plus efficace et la plus riche en fonctionnalités.

Analyse JSON dynamique avec JObject.Parse()

Utilisant également Newtonsoft.Json, la méthode JObject.Parse() fournit une analyse dynamique. Ceci est avantageux lorsque la structure JSON est inconnue ou nécessite un accès flexible aux propriétés.


using Newtonsoft.Json.Linq;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Jane Doe"",
            ""Age"": 25,
            ""City"": ""London"",
            ""Address"": {
                ""Street"": ""123 Main St"",
                ""Zip"": ""10001""
            }
        }";

        JObject jObject = JObject.Parse(jsonString);

        string name = (string)jObject["Name"];
        int age = (int)jObject["Age"];
        string city = (string)jObject["City"];
        string street = (string)jObject["Address"]["Street"];

        Console.WriteLine($"Name: {name}");
        Console.WriteLine($"Age: {age}");
        Console.WriteLine($"City: {city}");
        Console.WriteLine($"Street: {street}");
    }
}

JObject.Parse() crée un JObject. Les propriétés sont accessibles à l’aide d’indexeurs, permettant l’accès aux objets imbriqués. Le cast de type est crucial pour récupérer correctement les valeurs.

Utilisation de JavaScriptSerializer().Deserialize()

Le JavaScriptSerializer intégré (System.Web.Script.Serialization) offre une alternative plus simple. Cependant, il est généralement moins efficace que Newtonsoft.Json et possède moins de fonctionnalités. Il est inclus pour des raisons de complétude mais devrait être évité dans les applications de production.


using System.Web.Script.Serialization;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Peter Jones"",
            ""Age"": 40,
            ""City"": ""Paris""
        }";

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Person person = serializer.Deserialize<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

Ceci utilise JavaScriptSerializer.Deserialize<Person>(). Notez que vous devrez peut-être ajouter une référence à System.Web.Extensions selon votre projet.

En résumé, JsonConvert.DeserializeObject() de Newtonsoft.Json est recommandé pour ses performances et ses fonctionnalités. JObject.Parse() offre de la flexibilité, tandis que JavaScriptSerializer() fournit une alternative basique. Choisissez la méthode la mieux adaptée à vos besoins. Traitez toujours les exceptions potentielles (comme JsonReaderException) dans le code de production.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *