JSON (JavaScript Object Notation) est un format léger d’échange de données largement utilisé dans les applications web et les API. C# offre plusieurs manières efficaces de convertir des objets en chaînes JSON, simplifiant la communication avec d’autres systèmes et permettant un stockage de données lisible par l’homme. Cet article explore trois méthodes populaires pour cette conversion, en comparant leurs forces et leurs faiblesses.
Table des matières
- Conversion d’objets en JSON utilisant
JavaScriptSerializer
- Sérialisation JSON efficace avec
JsonConvert.SerializeObject
- Contrôle précis avec
JObject.FromObject
Conversion d’objets en JSON utilisant JavaScriptSerializer
La classe System.Web.Script.Serialization.JavaScriptSerializer
offre une approche simple de la sérialisation JSON. Cependant, c’est un composant hérité et il manque les fonctionnalités et les performances des bibliothèques plus modernes. Il est généralement recommandé d’utiliser des alternatives plus récentes pour les nouveaux projets.
using System;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(person);
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
Remarque : Nécessite une référence à System.Web.Extensions
(généralement trouvée sous les assemblages .NET Framework). Non recommandé pour .NET Core et les versions ultérieures.
Sérialisation JSON efficace avec JsonConvert.SerializeObject
Newtonsoft.Json (souvent appelé Json.NET) est une bibliothèque JSON largement utilisée et performante pour C#. Il fournit une solution robuste et riche en fonctionnalités pour la sérialisation et la désérialisation JSON. Installez le package NuGet Newtonsoft.Json
pour utiliser cette méthode.
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
JsonConvert.SerializeObject
est concis et efficace. Newtonsoft.Json offre de nombreuses options de personnalisation pour la gestion des valeurs nulles, la mise en forme, etc.
Contrôle précis avec JObject.FromObject
Également partie de la bibliothèque Newtonsoft.Json, la classe JObject
fournit un contrôle précis sur la structure JSON avant la sérialisation. Ceci est particulièrement utile lors de la manipulation de la représentation JSON avant de la convertir en chaîne.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JObject jsonObject = JObject.FromObject(person);
string jsonString = jsonObject.ToString();
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
Bien que similaire à JsonConvert.SerializeObject
pour les objets simples, JObject.FromObject
offre une plus grande flexibilité pour les scénarios complexes. Vous pouvez facilement ajouter, supprimer ou modifier des propriétés dans le JObject
avant la sérialisation finale.
Conclusion : Pour le développement C# moderne, les méthodes JsonConvert.SerializeObject
et JObject.FromObject
de Newtonsoft.Json sont fortement recommandées en raison de leurs performances, de leurs fonctionnalités et de leur flexibilité. N’oubliez pas d’installer le package NuGet Newtonsoft.Json
.