Was dieses Werkzeug tut
Aus einer JSON-Probe werden C#-Records, einer je Objekt.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
using System.Text.Json.Serialization;
public record Root(
[property: JsonPropertyName("id")] long Id,
[property: JsonPropertyName("firstName")] string FirstName,
[property: JsonPropertyName("address")] Address Address
);
public record Address(
[property: JsonPropertyName("city")] string City
);
Positionale Records brauchen C# 9; das using erscheint nur, wenn ein Attribut erscheint.
Das Ziel des Attributs zählt
C#-Eigenschaftsnamen stehen in PascalCase: firstName wird FirstName, content-type wird ContentType. System.Text.Json vergleicht nur auf Wunsch ohne Rücksicht auf Groß- und Kleinschreibung und nie über einen Bindestrich hinweg — also wird der Schlüssel per Attribut festgehalten.
Das Präfix property: ist der Teil, den man leicht falsch macht. Bei einem positionalen Record ist der Parameter nicht die Eigenschaft: ein Attribut ohne Ziel bleibt am Konstruktorparameter, und der Serialisierer sieht es nie. Mit Ziel landet es dort, wo es gelesen wird.
Die Typen
- Ganzzahlen werden
long, Dezimalzahlendouble— beide breiter als die 32-Bit-Vorgabe, denn eine JSON-Zahl verspricht nicht, hineinzupassen. nullund unbekannte Werte werdenobject?, was eingeschaltete nullable Referenztypen voraussetzt (Vorgabe seit .NET 6).- Arrays werden
List<T>; ein gemischtes Array wirdList<object>, außer es mischt Ganzzahlen und Dezimalzahlen — dann decktList<double>beide ab. - Ein Skalar an der Wurzel wird abgelehnt: C# hat keinen globalen Typalias,
42hat also nichts, was es werden könnte. Ein Array von Objekten gibt Ihnen den Record seines Elements, den Sie an eineList<Root>binden.
Was eine Probe nicht sagen kann
Keine Eigenschaft ist über jene object? hinaus nullbar, und keine hat einen Vorgabewert: das Dokument hatte für jede einen Wert. required und init lohnen sich, sobald Sie wissen, welche Schlüssel wirklich Pflicht sind — eine Probe sagt nur, welche zufällig da waren.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.