Zum Inhalt springen

JSON in TypeScript, Go, Python und mehr umwandeln

Fügen Sie JSON-Beispiele ein und erhalten Sie TypeScript-Interfaces, Zod-Schemas, Go-Structs sowie Typen für Python, Java, C#, Kotlin, Swift und Rust – direkt in Ihrem Browser erzeugt.

Mehrere Beispiele (nacheinander oder als JSON Lines) und die Objekte innerhalb von Arrays werden zusammengeführt: Schlüssel, die irgendwo fehlen, werden optional, null-Werte nullable.

TypeScript
Fügen Sie ein Beispiel ein und klicken Sie auf „Typen generieren“.
Deklarieren als
Läuft in Ihrem Browser · kein UploadSo funktioniert's

So verwenden Sie JSON zu Typen

  1. 1

    JSON-Beispiele einfügen

    Fügen Sie eine Antwort, ein Array von Datensätzen oder mehrere Antworten nacheinander ein; das Beispiel zeigt zwei zusammengeführte Nutzer.

  2. 2

    Sprache auswählen

    Wählen Sie TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift oder Rust und die passenden Stiloptionen.

  3. 3

    Root-Typ benennen

    Legen Sie den Namen des obersten Typs fest, zum Beispiel User oder OrderResponse.

  4. 4

    Generieren und kopieren

    Klicken Sie auf „Typen generieren“ und kopieren Sie den Code oder laden Sie ihn herunter; bei Änderungen wird er automatisch neu erzeugt.

Limits und Pro

Kostenlos ohne Registrierung: 9 Ausgabesprachen mit 3 Python-Stilen, beliebig viele zusammengeführte Beispiele und Dateien bis 20 MB; die Generierung wird nach 30 Sekunden abgebrochen.

Pro entfernt die Werbung; der Generator ist in jedem Tarif derselbe. Pro ansehen

Über JSON zu Typen

Typen für eine API-Antwort von Hand zu schreiben ist langsam und fehleranfällig, besonders wenn die Daten drei Ebenen tief verschachtelt sind. Fügen Sie ein oder mehrere JSON-Beispiele ein, und dieser Generator erkennt die Struktur und schreibt fertige Definitionen in neun Varianten: TypeScript-Interfaces oder Type-Aliasse, TypeScript mit Zod-Schemas zur Validierung zur Laufzeit, Go-Structs mit json-Tags, Python-Dataclasses, TypedDicts oder Pydantic-v2-Modelle, Java-Records mit Jackson-Annotationen, C#-Klassen für System.Text.Json, Kotlin-Datenklassen für kotlinx.serialization, Swift-Codable-Structs und Rust-Structs für serde.

Ein einzelnes Beispiel zeigt selten alle Felder, deshalb führt der Generator so viele Beispiele zusammen, wie Sie ihm geben. Fügen Sie mehrere Dokumente nacheinander, als JSON Lines oder als Array von Objekten ein: Ein Schlüssel, der in manchen Objekten fehlt, wird optional, ein Schlüssel, der manchmal null ist, wird nullable, eine Ganzzahl, die manchmal eine Dezimalzahl ist, wird zu einem Float, und tatsächlich gemischte Werte werden zu einem Union-Typ oder zum dynamischen JSON-Typ der Sprache. Verschachtelte Objekte erhalten eigene benannte Typen – aus orders wird Order, aus addresses wird Address –, und identische Strukturen werden nur einmal erzeugt und wiederverwendet. Objekte, deren Schlüssel Zahlen, UUIDs oder Datumsangaben sind, werden zu Maps.

Feldnamen werden in die Konvention der jeweiligen Sprache umgewandelt, und abweichende JSON-Schlüssel wie first-name oder class werden mit der passenden Annotation, dem passenden Alias oder CodingKeys zurückgeführt. Kommentare und abschließende Kommas im Beispiel werden toleriert.

Die Ausgabe beschreibt die Beispiele, die Sie angeben. Der Generator kann nichts über Felder oder Werte wissen, die Ihre Beispiele nicht enthalten. Prüfen Sie das Ergebnis daher anhand Ihrer API-Dokumentation, bevor Sie sich darauf verlassen.

Datenschutz

Die Beispiele werden von einem Web Worker in diesem Tab verarbeitet und der Code wird dort erzeugt. API-Antworten mit personenbezogenen oder internen Daten werden daher nicht hochgeladen. Die Sprach- und Benennungsoptionen werden im lokalen Speicher abgelegt; das eingefügte JSON wird nicht gespeichert.

Funktionen

Führt viele Beispiele zusammen

Fehlende Schlüssel werden optional und null-Werte nullable, über alle eingefügten Beispiele hinweg.

9 Sprachen

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift und Rust mit üblicher Benennung.

Schlüssel-Zuordnung inklusive

json-Tags, Aliasse, @SerialName, @JsonProperty und CodingKeys behalten die ursprünglichen JSON-Namen bei.

JSON zu Typen: Häufig gestellte Fragen

Wie wird entschieden, welche Felder optional sind?
Ein Feld ist optional, wenn mindestens eines der Objekte an dieser Stelle den Schlüssel nicht enthält. Bei einem einzelnen Objekt ist jedes Feld erforderlich, weil nichts etwas anderes zeigt. Fügen Sie mehrere echte Antworten oder ein Array von Datensätzen ein, damit der Generator sieht, welche Schlüssel mal vorhanden sind und mal nicht. „Jedes Feld optional machen“ ist für partielle oder Patch-Daten gedacht.
Was passiert, wenn ein Wert manchmal null ist?
Das Feld wird nullable: string | null in TypeScript, ein Zeiger in Go, str | None in Python, String? in Kotlin und Swift, Option<String> in Rust sowie ein Box- oder Nullable-Typ in Java und C#. Ein Feld, das in jedem Beispiel null ist, hat keinen erkennbaren Typ und wird daher zum unbekannten oder dynamischen JSON-Typ der Sprache.
Warum sind meine Ganzzahlen zu Floats geworden?
Hat ein Beispiel für dasselbe Feld 7 und ein anderes 7.5, muss der Typ beides aufnehmen können, also wird er zu Float oder Double. Auch Zahlen mit Dezimalpunkt wie 10.0 gelten als Dezimalzahlen. In TypeScript sind beide number; bei Zod wird ein Feld mit nur Ganzzahlen mit z.number().int() geprüft.
Ist das dasselbe wie quicktype?
Es löst dasselbe Problem mit einem eigenen Generator, der vollständig in Ihrem Browser läuft und einiges ergänzt: drei Python-Stile einschließlich TypedDict, Zod-Schemas und das Zusammenführen mehrerer eingefügter Dokumente. quicktype unterstützt mehr Sprachen und kann JSON Schema lesen. Für die neun Sprachen hier ist die Ausgabe so gestaltet, dass sie ohne zusätzliche Laufzeit-Helfer kompiliert.
Kann es Datumsangaben, Enums oder UUIDs erkennen?
Nein. Strings bleiben Strings, weil einige wenige Beispiele nicht beweisen können, dass jeder künftige Wert ein Datum oder Teil einer festen Menge ist. Ändern Sie den erzeugten Typ von Hand in Date, time.Time, datetime, ein Enum oder einen UUID-Typ, wo Ihre API das garantiert. Ausnahme sind Objekte mit UUIDs, Zahlen oder Datumsangaben als Schlüssel: Sie werden zu Maps.
Alle: entwickler-tools