JSON in Klassen und Structs umwandeln (7 Sprachen)
Aus Beispiel-JSON eine Python-Dataclass, einen C#-Record, ein Go-Struct, eine Kotlin-Data-Class, Rust-serde, Swift-Codable oder eine Dart-Klasse erzeugen
Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.
Hat dieses Werkzeug geholfen?
Danke, Ihre Rückmeldung ist angekommen.
So funktioniert es
Um die Antwort eines Webdienstes als typisierte Objekte zu verarbeiten, brauchen Sie zuerst passende Typen; eine verschachtelte Antwort mit zwanzig Feldern von Hand abzutippen dauert und bringt Tippfehler. Fügen Sie eine Beispielantwort in das linke Feld ein, wählen Sie die Sprache und geben Sie einen Wurzeltyp wie Bestellung ein; der Code erscheint sofort rechts. Im Beispiel wird das Objekt "lieferung" ein eigener Typ (Lieferung), das Array "positionen" eine Liste von PositionenItem: Die Einzahl wird nur bei englischen und türkischen Pluralendungen erkannt (items → Item), sonst wird Item angehängt – den Namen können Sie danach frei ändern. Alle Einträge eines Arrays werden zu einem Typ zusammengeführt: Der zweiten Position fehlt der Rabatt, daher wird das Feld in Python float | None, in C# double?, in Go *float64 und in Rust Option<f64>. Ob eine Zahl ganz oder dezimal ist, wird aus ihrer Schreibweise gelesen: 89.9 bleibt dezimal, 1024 ganzzahlig. Ein Schlüssel wie "kunden_name" wird nach der Regel der Sprache umbenannt (KundenName in Go, kundenName in Kotlin), der Originalname bleibt in einem Tag oder einer Annotation erhalten, damit die JSON-Bibliothek ihn zuordnen kann.
Dieses Werkzeug ist auch als json in python klasse umwandeln, json zu c# klasse, json in go struct umwandeln, json to kotlin data class, json to rust struct, json to swift, json to dart bekannt.
Was ist Datenklasse (data class, record, struct)?
Eine Datenklasse ist ein Typ, der vor allem Daten trägt statt Verhalten: Felder und ihre Typen sind festgelegt, den Rest ergänzt Compiler oder Bibliothek. Pythons @dataclass, der record in C#, die data class in Kotlin und die Structs in Go, Rust und Swift erfüllen diese Aufgabe. Wer eine JSON-Antwort auf solche Typen abbildet, findet vertippte Feldnamen und verwechselte Typen schon beim Schreiben statt erst zur Laufzeit.
Was ist Serialisierung?
Serialisierung wandelt ein Objekt Ihres Programms in übertragbaren Text wie JSON um; Deserialisierung baut das Objekt aus diesem Text wieder auf. Jede Sprache hat dafür eine Bibliothek: System.Text.Json, encoding/json, serde, Codable, kotlinx.serialization. Sie ordnen Feldnamen den JSON-Schlüsseln zu; weichen die Namen ab, teilen die von dieser Seite ergänzten Tags und Annotationen mit, welcher Schlüssel zu welchem Feld gehört.
Was unterscheidet JSON Schema von Typen einer Programmiersprache?
Typen einer Sprache (dataclass, struct, record) dienen dazu, JSON in einem einzelnen Programm einzulesen: Compiler oder Laufzeit prüfen Feldnamen und Typen, aber nur in dieser Sprache. JSON Schema ist ein sprachunabhängiger Vertrag; es prüft mit denselben Regeln in jeder Sprache, ob ein JSON-Dokument gültig ist, und steht oft in API-Dokumentationen. Liest Ihr eigener Code die Daten, nehmen Sie die Typen dieser Seite; schreiben Sie Regeln für mehrere Teams und Sprachen, passt JSON Schema besser.
Was jede Sprache bekommt und welche Bibliothek sie braucht
Jede Sprache folgt dem in ihrer Community üblichen Weg, damit der Code ohne Nacharbeit ins Projekt passt. Python nutzt @dataclass aus der Standardbibliothek und eine Klassenmethode from_dict, die auch verschachtelte Objekte aufbaut – eine Dataclass kann sich nicht selbst aus einem Dict erzeugen. Die C#-Ausgabe ist ein Positions-Record für das eingebaute System.Text.Json. In Go beginnen Felder mit Großbuchstaben, damit sie exportiert sind, und das Tag json:"..." trägt den Originalschlüssel; Abkürzungen wie id, url und api werden nach Go-Konvention zu ID, URL und API.
Kotlin braucht das Plugin kotlinx.serialization, Rust die Crates serde und serde_json (serde mit dem Feature derive in der Cargo.toml). Swift kommt mit Codable aus. Die Dart-Ausgabe ist ein handgeschriebenes fromJson/toJson-Paar, das in Flutter ohne Zusatzpakete und ohne Codegenerator wie json_serializable läuft.
- Python 3.7+: @dataclass + from_dict, optionales Feld float | None = None
- C# 9+: public record Bestellung(...) + [property: JsonPropertyName("bestellNr")]
- Go 1.18+: *float64 + json:"rabatt,omitempty"
- Kotlin: @Serializable data class, @SerialName("kunden_name")
- Rust: #[derive(Serialize, Deserialize)], Option<f64>, #[serde(rename)]
- Swift 5: struct Bestellung: Codable + enum CodingKeys
- Dart 3 / Flutter: final-Felder, factory fromJson, toJson
Fallstricke: ein Beispiel, null und gemischte Typen
Die Typen werden nur aus Ihrem Beispiel abgeleitet. Ein Feld, das im Beispiel nie null ist, im Betrieb aber null liefert, lässt Ihren Code genau dann scheitern. Fügen Sie daher möglichst ein Array mit mehreren Datensätzen ein: Beim Zusammenführen werden Felder, die in manchen Einträgen fehlen oder null sind, von selbst optional. Ein Feld, das nur null ist, hat keinen erkennbaren Typ und fällt auf einen Typ für beliebige JSON-Werte zurück (Any in Python, JsonElement in C#, serde_json::Value in Rust, ein JSONValue-Enum in der Swift-Ausgabe).
Ist ein Feld einmal Zahl und einmal Text, gilt derselbe Auffangtyp; auch der Elementtyp eines leeren Arrays bleibt unbekannt. Datumsangaben (2026-09-27) und kleine Wertemengen werden nicht zu Datumstypen oder Enums, sondern bleiben Strings – das Eingrenzen liegt bei Ihnen. Reservierte Wörter wie class, type oder self sind als Feldname verboten: Python bekommt class_, Kotlin und Swift nutzen Backticks, Rust schreibt r#type; der JSON-Name bleibt im Tag erhalten.
Häufige Fragen
Wie wandle ich JSON in eine Python-Klasse um?
Fügen Sie Beispiel-JSON links ein, wählen Sie Python und geben Sie den Namen des Wurzeltyps ein. Rechts entsteht für jedes verschachtelte Objekt eine @dataclass samt Methode from_dict, die das Objekt aus einem JSON-Dict aufbaut. Lesen Sie die Daten mit json.loads ein und übergeben Sie sie an Bestellung.from_dict(...).
Warum beginnen die Felder im Go-Struct mit Großbuchstaben?
In Go sind nur Felder mit großem Anfangsbuchstaben exportiert, und encoding/json kann nur exportierte Felder befüllen. Aus dem Schlüssel kunden_name wird daher das Feld KundenName; das Tag json:"kunden_name" sorgt dafür, dass beim Einlesen der richtige Schlüssel zugeordnet wird.
Warum sind manche Felder Optional, ? oder Option?
Das Feld fehlt in einigen Datensätzen des Arrays oder war im JSON null. Weiß die Sprache nicht, dass ein Wert leer sein kann, bricht das Einlesen ab. Sind Sie sicher, dass jedes Feld immer vorhanden ist, stellen Sie die Option auf Pflicht; Felder, die tatsächlich null waren, bleiben optional.
Wird mein eingefügtes JSON an einen Server geschickt?
Nein. Typableitung und Codeerzeugung laufen vollständig in Ihrem Browser; selbst eine Beispielantwort mit Kundendaten oder Zugangsschlüsseln verlässt diese Seite nicht. Nach dem Laden funktioniert die Seite auch offline.