← Alle Tools Code Gen

JSON zu C# Klassen Generator

JSON einfügen und sofort saubere C#-Klassen mit korrekten Typen und Annotationen erhalten.

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.

FAQ

Werden meine Daten an einen Server gesendet?

Nein. Die gesamte Verarbeitung findet vollständig in Ihrem Browser statt. Ihr JSON verlässt Ihr Gerät nie.

Welche Annotationsbibliothek soll ich wählen?

Wählen Sie System.Text.Json für .NET 6+-Projekte (Standard ohne zusätzliche Abhängigkeit). Wählen Sie Newtonsoft.Json wenn Ihr Projekt es bereits verwendet oder auf .NET Framework zielt.

Wie werden C#-reservierte Wörter als Eigenschaftsnamen behandelt?

Reservierte Wörter wie "class", "event", "operator" und "string" werden mit "@" präfixiert (z.B. @class) gemäß C# verbatim identifier-Syntax, und ein [JsonPropertyName]-Attribut bewahrt den ursprünglichen JSON-Schlüssel.

Werden nullable Referenztypen unterstützt?

Ja. Wenn eine Eigenschaft den Wert null hat oder in einigen Array-Elementen fehlt, wird sie als string? oder T? mit nullable-Annotation typisiert. Eine #nullable enable-Direktive wird oben in der Datei ausgegeben.

Kann ich record structs statt Records generieren?

Ja. Ein Toggle wechselt zwischen record class (Referenztyp, Standard) und record struct (Werttyp, C# 10+) je nach Ihren Performance- und Semantikanforderungen.

Ähnliche Tools