Traitement JSON en C# (.NET) : guide complet avec exemples
JSON (JavaScript Object Notation) est l'un des formats d'échange de données les plus populaires dans les applications web modernes, les API et les fichiers de configuration. Dans l'écosystème .NET, les développeurs disposent d'outils puissants pour travailler avec JSON, permettant de sérialiser facilement des objets en JSON et vice versa. Dans cet article, nous examinerons en détail deux approches principales : la bibliothèque intégrée System.Text.Json (recommandée pour .NET Core 3.0+ et .NET 5+) et la bibliothèque tierce populaire Newtonsoft.Json (également connue sous le nom de Json.NET).
1. System.Text.Json — le standard moderne .NET
Depuis .NET Core 3.0, Microsoft a introduit sa propre bibliothèque haute performance pour travailler avec JSON — System.Text.Json. Elle est optimisée pour une consommation mémoire minimale et une vitesse élevée, ce qui en fait un choix idéal pour les nouveaux projets.
1.1. Installation et importation
La bibliothèque est déjà intégrée dans .NET 5/6/7/8/9, donc aucune installation supplémentaire n'est nécessaire. Pour l'utiliser, il suffit d'importer l'espace de noms :
using System.Text.Json;using System.Text.Json.Serialization;1.2. Sérialisation et désérialisation de base
Prenons un exemple simple : la sérialisation d'un objet en JSON et inversement.
// Définition de la classepublic class Person{ public string Name { get; set; } public int Age { get; set; } public bool IsEmployed { get; set; }}
// Sérialisationvar person = new Person { Name = "Иван", Age = 30, IsEmployed = true };string json = JsonSerializer.Serialize(person);Console.WriteLine(json); // {"Name":"Иван","Age":30,"IsEmployed":true}
// Désérialisationvar deserializedPerson = JsonSerializer.Deserialize<Person>(json);Console.WriteLine(deserializedPerson.Name); // Иван1.3. Travail avec les attributs
System.Text.Json prend en charge les attributs pour un réglage fin de la sérialisation :
public class Product{ [JsonPropertyName("product_id")] public int Id { get; set; } [JsonIgnore] public string InternalCode { get; set; } [JsonConverter(typeof(JsonStringEnumConverter))] public ProductCategory Category { get; set; }}
public enum ProductCategory{ Electronics, Clothing, Food}
var product = new Product { Id = 101, InternalCode = "SECRET", Category = ProductCategory.Electronics };
string json = JsonSerializer.Serialize(product);// {"product_id":101,"Category":"Electronics"}// InternalCode n'est pas inclus dans le JSON grâce à [JsonIgnore]1.4. Options de sérialisation
Vous pouvez configurer le comportement du sérialiseur via JsonSerializerOptions :
var options = new JsonSerializerOptions{ WriteIndented = true, // Sortie formatée avec indentation PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // camelCase pour les propriétés DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // Ignorer les valeurs null};
string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);/* Sortie :{ "name": "Иван", "age": 30, "isEmployed": true}*/2. Newtonsoft.Json (Json.NET) — un outil éprouvé par le temps
Avant l'arrivée de System.Text.Json, Newtonsoft.Json était la norme de facto pour travailler avec JSON dans .NET. Il offre des réglages plus flexibles et un large éventail de fonctionnalités, bien qu'il soit moins performant.
2.1. Installation
Pour utiliser Newtonsoft.Json, vous devez installer le package NuGet :
// Via la console Package Manager :Install-Package Newtonsoft.Json
// Ou via .NET CLI :dotnet add package Newtonsoft.Json2.2. Travail de base
using Newtonsoft.Json;
public class Or