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
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
- System.IO (Pfade und Streams)
- JSON mit System.Text.Json (Opt-in, Konverter)
- Einfache Muster zum Parsen von CSV