0Pricing
C# Academy · Lektion

JSON mit System.Text.Json (Opt-in, Konverter)

JSON für C# 6: Verwenden Sie DataContractJsonSerializer mit [DataContract]/[DataMember] (Opt-in-Mitglieder) und einfache Anpassungen der Namensgebung ähnlich zu Konvertern.

JSON mit System.Text.Json (Opt-in, Konverter) ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

JSON in C# 6: Planung

Ziel: JSON ohne externe Pakete serialisieren und deserialisieren.

  • Verwenden Sie DataContractJsonSerializer
  • Mit DataMember können Sie Mitglieder gezielt einbeziehen
  • Passen Sie Namen mit Name= an
  • Lesen und schreiben Sie sicher aus Dateien und in Dateien

Opt-in-Modell

Opt-in-Modell: Kennzeichnen Sie den Typ mit DataContract und nur die einzubeziehenden Mitglieder mit DataMember. Verwenden Sie Name=, um die JSON-Schlüssel festzulegen.

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);
  }
}

In JSON serialisieren

Erstellen Sie einen DataContractJsonSerializer, schreiben Sie in einen Stream und kodieren Sie den Inhalt als UTF-8-String.

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"}
  }
}

Aus JSON deserialisieren

Deserialisieren Sie, indem Sie aus einem Stream lesen. Nur Felder mit DataMember werden befüllt.

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);
  }
}

JSON-Dateien speichern und laden

Speichern Sie JSON mithilfe von FileStream in using-Blöcken. Das entspricht realen Apps: Einstellungen, kleine Datenmengen usw.

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);
  }
}

Benennung und einfache Konvertierungen

Anpassen:

  • Verwenden Sie Name= in DataMember, um Eigenschaftsnamen zuzuordnen (z. B. user_name)
  • Kennzeichnen Sie bei Enumerationen jeden Wert mit EnumMember
  • Konvertieren Sie spezielle Formate (Datumsangaben, Zahlen) in C# 6 über eine Zeichenfolgeneigenschaft (manuelle Zuordnung)

Opt-in-Regel für JSON

Schnelltest: Wie beziehen Sie mit DataContractJsonSerializer nur bestimmte Eigenschaften in JSON ein?

Zusammenfassung

Zusammenfassung: Verwenden Sie DataContractJsonSerializer in C# 6, beziehen Sie Mitglieder mit DataMember gezielt ein, passen Sie Namen über Name= an und lesen und schreiben Sie mithilfe sicherer Stream-Muster.

Häufig gestellte Fragen

Ist die Lektion „JSON mit System.Text.Json (Opt-in, Konverter)“ kostenlos?

Ja — der vollständige Text von „JSON mit System.Text.Json (Opt-in, Konverter)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „JSON mit System.Text.Json (Opt-in, Konverter)“?

JSON für C# 6: Verwenden Sie DataContractJsonSerializer mit [DataContract]/[DataMember] (Opt-in-Mitglieder) und einfache Anpassungen der Namensgebung ähnlich zu Konvertern. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 3.

Wie lange dauert die Lektion „JSON mit System.Text.Json (Opt-in, Konverter)“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. System.IO (Pfade und Streams)
  2. JSON mit System.Text.Json (Opt-in, Konverter)
  3. Einfache Muster zum Parsen von CSV
← Zurück zu C# Academy