JSON-zu-C#-Konverter

Erzeuge C#-Klassen aus einem JSON-Beispiel direkt in deinem Browser.

Dieses Tool läuft vollständig in deinem Browser. Deine Dateien werden niemals auf einen Server hochgeladen.

using System.Collections.Generic;

public class Root
{
    public string Name { get; set; }
    public int Age { get; set; }
    public bool Active { get; set; }
    public List<string> Tags { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string Zip { get; set; }
}

Was dieser Konverter macht

Liest einen JSON-Wert und erzeugt passende C#-Klassen: eine Klasse pro im Beispiel gefundener Objektform, jeweils mit öffentlichen automatisch implementierten Eigenschaften.

So wird er verwendet

Füge ein JSON-Objekt, -Array oder einen primitiven Wert in den Editor ein. Sofort erscheint eine `Root`-Klasse, dazu eine weitere Klasse für jede verschachtelte Objektform; eine Wurzel, die kein Objekt ist, wird in eine `Root`-Klasse mit einer einzelnen `Value`-Eigenschaft verpackt.

Beispiel

Ein Objekt mit einem String-Feld `name` und einem verschachtelten Objekt `address` erzeugt eine `Root`-Klasse mit `public string Name { get; set; }` sowie eine separate `Address`-Klasse für die verschachtelte Form.

Typzuordnung und Benennung

Strings werden zu `string`, ganze Zahlen zu `int`, Dezimalzahlen zu `double`, Booleans zu `bool` und Arrays zu `List<ElementType>` (mit automatisch hinzugefügter `using System.Collections.Generic`-Direktive bei Bedarf). Eigenschaftsnamen werden gemäß C#-Konvention aus dem JSON-Schlüssel in PascalCase umgewandelt — ein Schlüssel `first_name` erzeugt also eine Eigenschaft `FirstName`.

Verschachtelte Objekte und Listen

Jedes verschachtelte Objekt erhält seine eigene Klasse, erzeugt aus seinem Schlüssel. Die Reihenfolge der Klassen in der Ausgabe spielt in C# keine Rolle, da sich Klassen derselben Datei unabhängig von ihrer Deklarationsreihenfolge gegenseitig referenzieren können.

Grenzen

Da Eigenschaftsnamen in PascalCase umgewandelt werden und nicht mehr dem ursprünglichen JSON-Schlüsseltext entsprechen, benötigt eine Deserialisierung von JSON direkt in diese Klassen mit System.Text.Json oder Newtonsoft.Json für jeden nicht bereits PascalCase-Schlüssel ein manuell hinzugefügtes [JsonPropertyName]/[JsonProperty]-Attribut. Die erzeugten Klassen beschreiben nur das eine bereitgestellte JSON-Beispiel.

Datenschutz

Analyse und Codeerzeugung laufen vollständig lokal in deinem Browser. Das eingefügte JSON und der erzeugte C#-Code werden niemals hochgeladen.

Häufig gestellte Fragen

Deserialisieren diese Klassen mein JSON automatisch?
Nicht immer — Eigenschaftsnamen werden gemäß C#-Konvention in PascalCase umgewandelt, daher benötigt ein JSON-Schlüssel wie first_name ein Attribut [JsonPropertyName("first_name")], um bei der Deserialisierung wieder zugeordnet zu werden.
Warum PascalCase statt des ursprünglichen JSON-Schlüssels?
Das folgt der Standard-C#-Namenskonvention für öffentliche Eigenschaften, die die meisten C#-Entwickler in ihrem eigenen Code erwarten und verwenden.
Wird mein JSON an einen Server gesendet?
Nein — Analyse und C#-Erzeugung laufen vollständig lokal in deinem Browser.