Traitement JSON en C# (.NET) : Guide complet sur Newtonsoft.Json et System.Text.Json

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

Traitement JSON en C# (.NET) : Guide complet

JSON (JavaScript Object Notation) est un format léger d'échange de données devenu un standard pour les API web et les fichiers de configuration. Dans l'écosystème C# (.NET), il existe deux outils principaux pour travailler avec JSON : la bibliothèque éprouvée Newtonsoft.Json (également connue sous le nom de Json.NET) et la bibliothèque moderne intégrée System.Text.Json, apparue dans .NET Core 3.0. Dans cet article, nous allons détailler les deux bibliothèques, leurs fonctionnalités et des exemples d'utilisation.



1. Newtonsoft.Json (Json.NET)

Newtonsoft.Json est la norme de facto pour le travail avec JSON en C# depuis de nombreuses années. Elle offre des fonctionnalités riches, notamment une sérialisation flexible, la prise en charge de LINQ to JSON et le travail avec des types dynamiques.



Installation

Pour installer via le gestionnaire de packages NuGet, exécutez la commande :

Install-Package Newtonsoft.Json

Ou via .NET CLI :

dotnet add package Newtonsoft.Json


Opérations de base : sérialisation et désérialisation

La sérialisation est la conversion d'un objet C# en une chaîne JSON. La désérialisation est le processus inverse.

using Newtonsoft.Json;

public class Person{ public string Name { get; set; } public int Age { get; set; } public List<string> Hobbies { get; set; }}

// SérialisationPerson person = new Person{ Name = "Alexei", Age = 30, Hobbies = new List<string> { "Programmation", "Lecture", "Voyages" }};

string json = JsonConvert.SerializeObject(person, Formatting.Indented);Console.WriteLine(json);

// Désérialisationstring jsonInput = @"{'Name':'Marie','Age':25,'Hobbies':['Dessin','Yoga']}";Person deserializedPerson = JsonConvert.DeserializeObject<Person>(jsonInput);Console.WriteLine($"Nom : {deserializedPerson.Name}, Âge : {deserializedPerson.Age}");


Travail avec des données dynamiques

Newtonsoft.Json prend en charge les types dynamiques, ce qui est pratique pour travailler avec une structure JSON inconnue.

dynamic dynamicObject = JsonConvert.DeserializeObject("{'Name':'Ivan','Score':95.5}");Console.WriteLine($"Étudiant : {dynamicObject.Name}, Note : {dynamicObject.Score}");


LINQ to JSON

La bibliothèque fournit une API puissante pour interroger les données JSON à l'aide de LINQ.

using Newtonsoft.Json.Linq;

string json = @"{ 'users': [ {'name': 'Anna', 'age': 28}, {'name': 'Pierre', 'age': 35}, {'name': 'Hélène', 'age': 22} ]}";

JObject obj = JObject.Parse(json);var youngUsers = obj["users"] .Where(u => (int)u["age"] < 30) .Select(u => (string)u["name"]);

foreach (var name in youngUsers){ Console.WriteLine(name); // Affiche : Anna, Hélène}


2. System.Text.Json

System.Text.Json est une bibliothèque moderne de Microsoft, optimisée pour les performances et une consommation mémoire minimale. Elle est intégrée à .NET et ne nécessite pas l'installation de packages supplémentaires.



Opérations de base

using System.Text.Json;using System.Text.Json.Serialization;

public class Product{ [JsonPropertyName("product_name")] public string Name { get; set; } public decimal Price { get; set; } [JsonIgnore] public string InternalCode { get; set; }}

// SérialisationProduct product = new Product{ Name = "Ordinateur portable", Price = 75000.50m, InternalCode = "INT-001"};

string json = JsonSerializer.Serialize(product, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);

// Désérialisationstring jsonInput = @"{""product_name"":""Smartphone"",""Price"":45000.00}";Product deserializedProduct = JsonSerializer.Deserialize<Product>(jsonInput);Console.WriteLine($"Produit : {deserializedProduct.Name}, Prix : {deseriali

Recommendations