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()
- Analyse JSON dynamique avec JObject.Parse()
- Utilisation de JavaScriptSerializer().Deserialize()
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.