JSON avec System.Text.Json (activations explicites et convertisseurs)
JSON compatible avec C# 6 : utilisez DataContractJsonSerializer avec [DataContract]/[DataMember] (membres activés explicitement) et de simples ajustements de nommage semblables à ceux des convertisseurs.
JSON avec System.Text.Json (activations explicites et convertisseurs) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
JSON en C# 6 : plan
Objectif : sérialiser et désérialiser du JSON sans bibliothèques externes.
- Utiliser DataContractJsonSerializer
- Activer explicitement les membres via DataMember
- Personnaliser les noms avec Nom=
- Lire et écrire des fichiers en toute sécurité
Modèle à activation explicite
Modèle à activation explicite : marquez le type avec DataContract et uniquement les membres inclus avec DataMember. Utilisez Nom= pour contrôler les clés JSON.
using System;
using System.Runtime.Serialization;
[DataContract] // opt-in: only [DataMember] will be serialized
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
// Not included: no DataMember
public string InternalNote { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
User u = new User { Id = 7, Name = "Ada", InternalNote = "hidden" };
Console.WriteLine("Ready to serialize: " + u.Name);
}
}
Sérialiser en JSON
Créez un DataContractJsonSerializer, écrivez dans un flux, puis encodez le contenu en UTF-8 pour obtenir une chaîne.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
[DataContract]
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
public string InternalNote { get; set; }
}
public class Program
{
public static string ToJson(User u)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, u);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
public static void Main(string[] args)
{
User u = new User { Id = 1, Name = "Ada", InternalNote = "not saved" };
string json = ToJson(u);
Console.WriteLine(json); // {"id":1,"name":"Ada"}
}
}
Désérialiser depuis du JSON
Désérialisez en lisant depuis un flux. Seuls les champs DataMember sont renseignés.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
[DataContract]
public sealed class User
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
}
public class Program
{
public static User FromJson(string json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
byte[] bytes = Encoding.UTF8.GetBytes(json);
using (MemoryStream ms = new MemoryStream(bytes))
{
return (User)ser.ReadObject(ms);
}
}
public static void Main(string[] args)
{
string json = "{\"id\":42,\"name\":\"Bob\"}";
User u = FromJson(json);
Console.WriteLine(u.Id + " - " + u.Name);
}
}
Enregistrer et charger des fichiers JSON
Conservez le JSON avec FileStream dans des blocs de gestion automatique des ressources. Cela correspond aux applications réelles : paramètres, petites données, etc.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
[DataContract]
public sealed class Settings
{
[DataMember(Name = "theme")]
public string Theme { get; set; }
[DataMember(Name = "notifications")]
public bool Notifications { get; set; }
}
public class Program
{
public static void Save(string path, Settings s)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
ser.WriteObject(fs, s);
}
}
public static Settings Load(string path)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
return (Settings)ser.ReadObject(fs);
}
}
public static void Main(string[] args)
{
string path = "settings.json";
Save(path, new Settings { Theme = "dark", Notifications = true });
Settings loaded = Load(path);
Console.WriteLine(loaded.Theme + " / " + loaded.Notifications);
}
}
Nommage et conversions simples
Personnalisez :
- Utilisez Nom= dans DataMember pour associer les noms de propriétés (par exemple, nom_utilisateur)
- Pour les énumérations, marquez chaque valeur avec MembreÉnumération
- Pour les formats spéciaux (dates, nombres), convertissez-les en une propriété chaîne (correspondance manuelle) en C# 6
Règle d’activation explicite pour JSON
Récapitulatif
Récapitulatif : utilisez DataContractJsonSerializer en C# 6, activez explicitement les membres avec DataMember, ajustez les noms via Nom= et lisez ou écrivez en utilisant des schémas de gestion sûre des flux.
Questions Fréquemment Posées
La leçon « JSON avec System.Text.Json (activations explicites et convertisseurs) » est-elle gratuite ?
Oui — le texte complet de « JSON avec System.Text.Json (activations explicites et convertisseurs) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « JSON avec System.Text.Json (activations explicites et convertisseurs) » ?
JSON compatible avec C# 6 : utilisez DataContractJsonSerializer avec [DataContract]/[DataMember] (membres activés explicitement) et de simples ajustements de nommage semblables à ceux des convertisse… Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 3.
Combien de temps prend la leçon « JSON avec System.Text.Json (activations explicites et convertisseurs) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- System.IO (chemins et flux)
- JSON avec System.Text.Json (activations explicites et convertisseurs)
- Modèles simples d’analyse CSV