1. Présentation de Newtonsoft.Json
Newtonsoft.Json (communément appelé Json.NET) est une bibliothèque open source de sérialisation‑désérialisation JSON pour l’écosystème .NET
- Première version Json.NET 1.0.1 sortie en 2006, les versions majeures dépassent aujourd’hui la version 10
- Initialement compatible avec .NET 2.0, fonctionne avec quasiment tous les frameworks .NET (Framework/.NET Core/.NET 5+)
- Assembly :
Newtonsoft.Json.dll, installez‑le via NuGet - Le code source était hébergé sur CodePlex, il est maintenant migré sur GitHub, très utilisé dans de nombreux projets d’entreprise
2. Qu’est‑ce que JSON
JSON(JavaScript Object Notation)
- Format d’échange de données textuel léger et indépendant des langages, il n’est pas exclusif à JavaScript
- Structure de base : paire clé‑valeur
key:value; prend en charge les objets imbriqués{}et les tableaux[]
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Langage du code : C# (cs)
II. Définition des classes d’entité (correspondance avec la structure JSON)
Person.cs (objet étudiant)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Langage du code : C# (cs)
WebInfo.cs (objet racine)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Langage du code : C# (cs)
Exemple‑Sérialiser un objet en JSON
protected void Page_Load(object sender, EventArgs e)
{
// 1. Instancier l’entité et affecter les valeurs
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Écriture bas niveau Newtonsoft.Json : sérialisation avec JsonWriter
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Langage du code : C# (cs)
Syntaxe simplifiée pour un usage quotidien
Newtonsoft.Json propose des méthodes statiques utilitaires, inutile d’instancier manuellement JsonWriter :
// Sérialisation en une ligne, très utilisée en développement
string json = JsonConvert.SerializeObject(webInfo);Langage du code : C# (cs)
Résultat JSON de sortie
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Langage du code : C# (cs)
Autres points
- System.Text.Json : bibliothèque JSON intégrée Microsoft depuis .NET Core 3.0 ; Newtonsoft.Json reste très répandu sur les anciens projets .NET Framework
- Fonctionnalités : alias de propriétés, exclusion de champs, formatage des dates, gestion des références circulaires et autres fonctions avancées
Présentation