POCO-, Record- und Annotationsmodi
Plain Old CLR Objects (POCOs) sind die flexibelste C#-Ausgabe: öffentliche Eigenschaften mit { get; set; }-Accessoren, parameterlosem Konstruktor und vollständiger Kompatibilität mit System.Text.Json und Newtonsoft.Json. Das ist die Standardausgabe und funktioniert über alle .NET-Versionen hinweg.
C# 9+ Records bieten eine kompakte Alternative für unveränderliche Datentransferobjekte. Eine positionale Record-Deklaration generiert automatisch einen primären Konstruktor, init-only-Eigenschaften, strukturelle Gleichheit und eine Deconstruct-Methode. Ideal für API-Antwortmodelle und Domain-Value-Objects.
Der Annotationsmodus fügt [JsonPropertyName("key")] (System.Text.Json) oder [JsonProperty("key")] (Newtonsoft.Json) zu jeder Eigenschaft hinzu, damit PascalCase-C#-Eigenschaftsnamen korrekt auf camelCase-JSON-Schlüssel gemappt werden. Nullable-Referenztypen (string? und T?) werden ausgegeben wenn ein Feld in einigen Objekten fehlt.
Typ-Mapping und Namenskonventionen
JSON-Zeichenketten werden zu string, Ganzzahlen zu int (oder long für große Werte), Dezimalzahlen zu double, Booleans zu bool, null-only-Felder zu object?, und Arrays zu List<T>. Verschachtelte Objekte generieren eigene benannte Klassen.
JSON-Schlüssel werden automatisch in PascalCase-C#-Eigenschaftsnamen nach Microsoft-Namensrichtlinien konvertiert: camelCase-Schlüssel wie "firstName" werden zu "FirstName", snake_case-Schlüssel wie "first_name" ebenfalls, und kebab-case-Schlüssel wie "first-name" auch. Der ursprüngliche Schlüssel wird im [JsonPropertyName]-Attribut bewahrt.
Die Namespace-Deklaration lautet standardmäßig "MyApp.Models", ist aber konfigurierbar. Eine using-Direktive für System.Collections.Generic wird hinzugefügt wenn List<T>-Eigenschaften vorhanden sind. Die Ausgabe ist eine einzelne .cs-Datei mit allen Klassen in Abhängigkeitsreihenfolge.
.NET-Entwicklungs-Workflows
Der häufigste Workflow ist das Modellieren einer Drittanbieter-REST-API. Fügen Sie eine JSON-Beispielantwort ein, wählen Sie den System.Text.Json-Annotationsmodus und legen Sie die generierte Datei in Ihr Projekt. Die Klassen sind sofort mit HttpClient.GetFromJsonAsync<T>() nutzbar.
ASP.NET Core Web API-Projekte profitieren von gut typisierten Anfrage- und Antwortmodellen. Der Generator erzeugt Klassen die direkt als Controller-Action-Parameter ([FromBody]) und Rückgabetypen funktionieren.
Entity Framework Core-Migrationen beginnen mit C#-Entity-Klassen. Obwohl der Generator EF-spezifische Attribute nicht automatisch hinzufügen kann, liefert die POCO-Ausgabe einen soliden Ausgangspunkt den Sie mit [Table], [Key] und Navigationseigenschaften dekorieren können.