0Pricing
C# Academy · Leçon

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

Vérification rapide : avec DataContractJsonSerializer, comment activer uniquement certaines propriétés pour le 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

  1. System.IO (chemins et flux)
  2. JSON avec System.Text.Json (activations explicites et convertisseurs)
  3. Modèles simples d’analyse CSV
← Retour à C# Academy