💎 Lehrpfad 4: Architektur, xUnit & Cloud Master

C# 13: System.Text.Json & Asynchrone Dateien

Lerne die blitzschnelle native JSON-Serialisierung mit System.Text.Json und asynchrone Dateioperationen mit System.IO.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.cs (Startercode) 🧪 TestAufgabe.cs (Tests) 💡 Musterloesung.cs (Lösung) 📖 README.md

💡 1. High-Performance JSON mit System.Text.Json

`System.Text.Json` arbeitet direkt auf UTF-8 Byte-Streams ohne unnötige String-Allokationen:

public record Config(string ServerUrl, int Port, bool IsSecure);

// 1. Asynchron in Datei serialisieren:
var config = new Config("https://api.domain.com", 443, true);
string filePath = "config.json";

using (var writeStream = File.Create(filePath)) {
    await JsonSerializer.SerializeAsync(writeStream, config, new JsonSerializerOptions {
        WriteIndented = true // Schöne Formatierung
    });
}

// 2. Asynchron aus Datei deserialisieren:
using (var readStream = File.OpenRead(filePath)) {
    var geladen = await JsonSerializer.DeserializeAsync(readStream);
    Console.WriteLine($"Geladen: {geladen?.ServerUrl}:{geladen?.Port}");
}
📦 Didaktische Analogie: Fließband-Verpackung

Frühere JSON-Bibliotheken bauten riesige Zwischentexte im RAM auf. `System.Text.Json` ist wie ein Fließbandroboter: Er verpackt die Bytes direkt im Vorbeifahren in den Datei-Stream!

⚡ 2. Quick-Cheat-Sheet

MethodeStream-basiert?Performance
JsonSerializer.SerializeAsyncJa (Stream)Extrem hoch, minimale Speicherallokation
JsonSerializer.SerializeNein (liefert string)Einfach für kleine In-Memory Payloads
File.ReadAllTextAsyncNeinBequem für kleine Textdateien
FileStream mit usingJaIdeal für große Datenmengen

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Case-Insensitive Deserialisierung

Standardmäßig achtet `System.Text.Json` strikt auf Groß-/Kleinschreibung. Setze PropertyNameCaseInsensitive = true für flexible JSON-APIs.

⚠️ Fehlendes using bei File.Create

Vergisst man das `using`, bleibt die Datei vom Betriebssystem gesperrt und spätere Leseversuche scheitern mit IOException!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.cs

💻 In Web-IDE öffnen & lösen →