JSON zu C# Klasse

Fügen Sie ein JSON-Beispiel ein und erhalten Sie C# POCO-Klassen, die bereit sind, in eine .cs-Datei eingefügt zu werden. Wählt sinnvolle Typen, behandelt verschachtelte Objekte mit zusätzlichen Klassendefinitionen, unterstützt nullable Referenztypen und gibt entweder System.Text.Json oder Newtonsoft.Json-Attribute je nach Ihrem Projekt aus.

Wie man JSON in C# konvertiert

  1. 1

    Fügen Sie das JSON ein

    Ein einzelnes Beispiel reicht aus. Mehrere Beispiele verbessern die Inferenz von nullable und Array-Elementen.

  2. 2

    Wählen Sie den Stil

    System.Text.Json (.NET 6+) oder Newtonsoft.Json (legacy). PascalCase-Eigenschaftsnamen mit `[JsonPropertyName]` für camelCase JSON.

  3. 3

    Wählen Sie die Ziel-C#-Version

    C# 10+ für Records und dateigebundene Namensräume, C# 8 für nullable Referenztypen oder älter für maximale Kompatibilität.

  4. 4

    Kopieren Sie die Klassen

    Eine Root-Klasse plus verschachtelte Klassen für jede Objektform, alles in einer Datei, bereit zum Einfügen in Ihr Projekt.

Beispielausgabe

Für die Eingabe:

{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }

System.Text.Json-Ausgabe (C# 10+):

public class User
{
    [JsonPropertyName("firstName")]
    public string FirstName { get; set; } = default!;

    [JsonPropertyName("age")]
    public int Age { get; set; }

    [JsonPropertyName("emails")]
    public List<string> Emails { get; set; } = new();

    [JsonPropertyName("address")]
    public Address Address { get; set; } = default!;
}

public class Address
{
    [JsonPropertyName("city")]
    public string City { get; set; } = default!;
}

Typzuordnung

JSON C#-Typ
string string
integer int (oder long für > int.MaxValue)
number (decimal) double (oder decimal, wenn gewählt)
boolean bool
null object? (oder mit Geschwister zusammengeführt)
ISO-8601-Datum DateTime (oder DateOnly)
GUID-geformter String Guid
Array von Strings List<string>
Objekt Verschachtelte Klasse

Attributoptionen

  • System.Text.Json ([JsonPropertyName("foo")]), bevorzugt für .NET 6+ und neue Projekte.
  • Newtonsoft.Json ([JsonProperty("foo")]), für Legacy-Projekte oder wenn Sie spezifische Funktionen von Newtonsoft benötigen.
  • Keine, Eigenschaftsnamen stimmen genau mit JSON-Schlüsseln überein (funktioniert nur, wenn JSON-Schlüssel bereits PascalCase sind).

Häufige Fehler

  • Verwendung von int für ein Feld, das überlaufen könnte. Wenn Ihr JSON Werte hat, die int.MaxValue überschreiten, verwenden Sie long. Der Generator fördert automatisch, wenn er große Werte sieht.
  • Fehlendes [JsonIgnore] für berechnete Eigenschaften. Wenn Sie Hilfseigenschaften zur generierten Klasse hinzufügen, dekorieren Sie diese mit [JsonIgnore], sonst werden sie beim Serialisieren ausgegeben.
  • Vergessen der kulturunabhängigen Analyse. decimal-Felder sollten mit CultureInfo.InvariantCulture deserialisiert werden; System.Text.Json macht dies standardmäßig, Newtonsoft mit globalen Einstellungen.
  • Vertrauen auf den Generator mit einem Beispiel. Nullbarkeit und Array-Elementtypen werden aus dem, was er sieht, geschätzt. Überprüfen Sie immer die nullable-Anmerkungen gegen das tatsächliche API-Verhalten.

Häufig gestellte Fragen

Für neue Projekte auf .NET 6+ verwenden Sie System.Text.Json, es ist schneller, integriert und unterstützt jetzt fast jede Funktion, die Newtonsoft bietet. Verwenden Sie Newtonsoft für Legacy-Projekte oder wenn Sie spezifische Funktionen benötigen (benutzerdefinierte Vertragsauflöser, JObject, dynamische Verarbeitung).

Records sind idiomatisch für unveränderliche DTOs in C# 10+. Sie bieten Wertgleichheit und eine prägnante Syntax. Klassen sind besser, wenn Sie Mutation oder Legacy-Kompatibilität benötigen. Das Tool ermöglicht Ihnen die Auswahl.

Wenn Ihr Projekt nullable Referenztypen verwendet (C# 8+), werden Felder, die in einem Beispiel als null beobachtet werden, zu string?, int? usw. Ohne NRT wird die Nullbarkeit nur für Werttypen signalisiert (z. B. int?).

Gemischte Arrays unterschiedlicher Objektformen sind in stark typisierten C# nicht direkt darstellbar. Das Tool leitet eine gemeinsame Basisklasse oder (Fallback) object ab; für gemischte Arrays möchten Sie normalerweise das JSON neu gestalten.

Verwandte Tools

Tool in anderen Sprachen verfügbar