Travailler avec JSON en C# : analyse et sérialisation pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction au travail avec JSON en C#

\n\n

JSON (JavaScript Object Notation) est un format léger d'échange de données largement utilisé dans le développement web, les applications mobiles et les microservices. Pour un développeur C#, savoir travailler avec JSON est une compétence essentielle. Dans cet article, nous aborderons les bases de l'analyse (désérialisation) et de la sérialisation JSON en utilisant l'espace de noms moderne System.Text.Json, qui fait partie de .NET Core 3.0 et versions ultérieures, ainsi que .NET 5/6/7/8.

\n\n

Nous verrons :

\n
    \n
  • Ce que sont la sérialisation et la désérialisation
  • \n
  • Comment convertir un objet C# en chaîne JSON
  • \n
  • Comment lire du JSON et le retransformer en objet
  • \n
  • Le travail avec des objets imbriqués et des collections
  • \n
  • La gestion des erreurs et la configuration de la sérialisation
  • \n
\n\n

Tous les exemples de code sont écrits pour une application console C# (.NET 6+). Vous pourrez les copier et les exécuter immédiatement.

\n\n

1. Bases de la sérialisation : objet → JSON

\n\n

La sérialisation est le processus de conversion d'un objet (ou d'une structure de données) en une chaîne au format JSON. En C#, on utilise la classe JsonSerializer de l'espace de noms System.Text.Json.

\n\n

Création d'un modèle simple

\n\n

Supposons que nous ayons une classe Person :

\n\n
public class Person\n{\n    public string Name { get; set; }\n    public int Age { get; set; }\n    public string Email { get; set; }\n}
\n\n

Sérialisation d'un objet

\n\n

Créons maintenant une instance et convertissons-la en JSON :

\n\n
using System.Text.Json;\n\nPerson person = new Person\n{\n    Name = "Иван Петров",\n    Age = 30,\n    Email = "ivan@example.com"\n};\n\nstring jsonString = JsonSerializer.Serialize(person);\nConsole.WriteLine(jsonString);
\n\n

Résultat :

\n\n
{"Name":"Иван Петров","Age":30,"Email":"ivan@example.com"}
\n\n

Par défaut, JsonSerializer utilise le camelCase pour les noms de propriétés (première lettre en minuscule), mais dans notre exemple, les noms restent en majuscule car nous n'avons pas modifié les paramètres. Si vous avez besoin d'un camelCase strict, utilisez JsonSerializerOptions :

\n\n
var options = new JsonSerializerOptions\n{\n    PropertyNamingPolicy = JsonNamingPolicy.CamelCase\n};\nstring jsonCamelCase = JsonSerializer.Serialize(person, options);\nConsole.WriteLine(jsonCamelCase);\n// {"name":"Иван Петров","age":30,"email":"ivan@example.com"}
\n\n

2. Désérialisation : JSON → objet

\n\n

La désérialisation est le processus inverse : on prend une chaîne JSON et on la transforme en objet C#.

\n\n

Exemple simple de désérialisation

\n\n

Supposons que nous ayons reçu du JSON d'une API :

\n\n
string jsonFromApi = @"{""Name"":""Анна Смирнова"",""Age"":25,""Email"":""anna@test.com""}";\n\nPerson? personFromJson = JsonSerializer.Deserialize<Person>(jsonFromApi);\n\nif (personFromJson != null)\n{\n    Console.WriteLine($"Nom : {personFromJson.Name}, Âge : {personFromJson.Age}");\n}
\n\n

Notez le signe ? après le type Person — c'est une annotation nullable indiquant que le résultat peut être null (par exemple, si le JSON est incorrect).

\n\n

Travail avec les tableaux et les listes

\n\n

Le JSON contient souvent des collections d'objets. Supposons que nous ayons un tableau d'utilisateurs :

\n\n
string jsonArray = @"\n[\n    {""Name"":""Олег"",""Age"":35},\n    {""Name"":""Мария"",""Age"":28},\n    {""Name"":""Дмитрий"",""Age"":42}\n]";\n\nList<Person>? people = JsonSerializer.Deserialize<List<Person>>(jsonArray);\n\nif (people != null)\n{\n    foreach (var p in people)\n    {\n        Console.WriteLine($"{p.Name} - {p.Age} ans");\n    }\n}
\n\n

3. Travail avec des objets imbriqués et des structures complexes

\n\n

Les données JSON réelles sont rarement plates. Considérons

Blogs

Book Recommendations