💡 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}");
}
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
| Methode | Stream-basiert? | Performance |
|---|---|---|
JsonSerializer.SerializeAsync | Ja (Stream) | Extrem hoch, minimale Speicherallokation |
JsonSerializer.Serialize | Nein (liefert string) | Einfach für kleine In-Memory Payloads |
File.ReadAllTextAsync | Nein | Bequem für kleine Textdateien |
FileStream mit using | Ja | Ideal für große Datenmengen |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Standardmäßig achtet `System.Text.Json` strikt auf Groß-/Kleinschreibung. Setze PropertyNameCaseInsensitive = true für flexible JSON-APIs.
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.