Introduction au travail avec JSON en C#
JSON (JavaScript Object Notation) est un format léger d'échange de données qui est devenu la norme pour l'interaction entre les services web, les fichiers de configuration et les API. Dans l'écosystème C# (.NET), le travail avec JSON est l'une des tâches fondamentales que chaque développeur rencontre. Dans cet article, nous allons détailler comment effectuer l'analyse (désérialisation) et la sérialisation des données en C#, en utilisant à la fois la bibliothèque intégrée System.Text.Json et la bibliothèque tierce populaire Newtonsoft.Json.
Vous apprendrez comment convertir des objets C# en chaînes JSON et vice versa, comment travailler avec des structures imbriquées, ainsi que les pièges potentiels que vous pourriez rencontrer en pratique. Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant systématiser leurs connaissances.
Sérialisation d'objets C# en JSON
La sérialisation est le processus de conversion d'un objet C# (ou d'une autre structure de données) en une chaîne au format JSON. Dans .NET, il existe plusieurs approches pour cela. Examinons les deux principales : System.Text.Json (recommandé par Microsoft) et Newtonsoft.Json (héritage, mais encore largement utilisé).
Sérialisation avec System.Text.Json
À partir de .NET Core 3.0, Microsoft a introduit sa propre bibliothèque pour travailler avec JSON — System.Text.Json. Elle se distingue par ses hautes performances et sa consommation mémoire minimale. Pour la sérialisation, on utilise la méthode JsonSerializer.Serialize().
using System;using System.Text.Json;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
class Program{ static void Main() { var person = new Person { Name = "Иван Петров", Age = 30, Email = "ivan@example.com" };
string json = JsonSerializer.Serialize(person); Console.WriteLine(json); }}Résultat de l'exécution :
{"Name":"Иван Петров","Age":30,"Email":"ivan@example.com"}Sérialisation avec Newtonsoft.Json
La bibliothèque Newtonsoft.Json (également connue sous le nom de Json.NET) a longtemps été la norme de facto. Elle offre plus de flexibilité et d'options de configuration que la solution intégrée. Pour l'utiliser, vous devez installer le package NuGet Newtonsoft.Json.
using System;using Newtonsoft.Json;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
class Program{ static void Main() { var person = new Person { Name = "Мария Сидорова", Age = 25, Email = "maria@example.com" };
string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); }}Le résultat sera similaire, mais Newtonsoft.Json utilise par défaut la notation camelCase pour les noms de propriétés, si cela est configuré.
Configuration de la sérialisation
Dans les deux bibliothèques, vous pouvez contrôler le format de sortie : ignorer les valeurs null, utiliser le CamelCase, formater le JSON avec des indentations, etc.
Exemple pour System.Text.Json avec configuration :
var options = new JsonSerializerOptions{ WriteIndented = true, // Sortie jolie avec indentations PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // Notation camelCase DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // Ignorer les null};
string json = JsonSerializer.Serialize(person, options);Analyse (désérialisation) du JSON en C#
La désérialisation est le processus inverse : la conversion d'une chaîne JSON en un objet C#. Cela est nécessaire lors de la réception de données depuis une API, de la lecture de fichiers de configuration