JSON zu TypeScript, Python und SQL

Wandelt ein JSON-Objekt oder ein Array von Objekten in ein TypeScript-Interface, eine Python-Klasse, ein Pydantic-Modell oder SQL um. Die formatierte Ausgabe bleibt beim JSON-Formatierer

Was diese Seite baut

Eine API-Probe ist oft ein JSON-Objekt oder eine Liste von Objekten. Diese Seite schreibt daraus ein TypeScript-Interface, eine Python-Klasse, ein Pydantic-Modell oder ein CREATE TABLE und ein INSERT je Objekt. Formatierung und Reparatur bleiben beim JSON-Formatierer.

So wird sie benutzt

  1. Fügen Sie JSON in das Feld ein. Beim Tippen aktualisieren ist an.
  2. Der Modus ist TypeScript-Schnittstelle, SQL CREATE TABLE + INSERT, Python-Klasse oder Pydantic-Modell. Name beginnt als Item. Optionale Eigenschaften beginnt angehakt. Das letzte Kästchen ist export bei TypeScript und Importe bei Python oder Pydantic.
  3. Umwandeln läuft einmal. Beispiel anzeigen füllt {"id":1,"name":"Ada","ok":true,"tags":["a","b"],"meta":{"n":2}}, setzt den Modus auf TypeScript-Schnittstelle, Name auf Item und lässt beide Kästchen an. Das Ergebnis enthält export interface Item mit id?: number, name?: string, ok?: boolean, tags?: string[] und meta?: ItemMeta, plus export interface ItemMeta mit n?: number.
  4. Wechseln Sie den Modus zu SQL CREATE TABLE + INSERT. Die Tabelle ist item. Die Spalten sind id BIGINT NOT NULL, name TEXT NOT NULL, ok BOOLEAN NOT NULL, tags TEXT NOT NULL und meta TEXT NOT NULL. Das INSERT ist 1, 'Ada', 1, '["a","b"]', '{"n":2}'.
  5. Wechseln Sie den Modus zu Python-Klasse und lassen Sie Optionale Eigenschaften und Importe angehakt. Das Ergebnis beginnt mit from dataclasses import dataclass und from typing import Optional, List, dann die Klasse @dataclass ItemMeta mit n: Optional[int] = None, dann die Klasse @dataclass Item mit id, name, ok, tags: Optional[List[str]] = None und meta: Optional[ItemMeta] = None. Wechseln Sie den Modus zu Pydantic-Modell: Die Importe fügen from pydantic import BaseModel hinzu, und beide Klassen erweitern BaseModel, ohne @dataclass. Beispiel anzeigen bleibt bei TypeScript-Schnittstelle.
  6. Alles löschen leert beide Felder. Ergebnis kopieren kopiert die Ausgabe.

Wie die Typen gewählt werden

Die Wurzel muss ein Objekt oder ein Array von Objekten sein. Eine Zahl, eine Zeichenkette oder ein Array von Zahlen endet mit einem Fehler. Ein Objekt ohne Schlüssel endet mit einem Fehler.

TypeScript nutzt boolean, number und string. Ein Array eines dieser Typen wird T[]. Ein leeres Array wird unknown[]. Ein verschachteltes Objekt wird ein weiteres Interface: Elternname plus Schlüssel, also ist meta unter Item gleich ItemMeta. Gemischte Typen werden unknown. Optionale Eigenschaften setzt ? an jedes Feld. Ist die Wurzel ein Array und fehlt ein Schlüssel in manchen Objekten, ist das Feld optional, auch wenn Optionale Eigenschaften aus ist. export schreibt export interface. Eine Array-Wurzel fügt den Kommentar // JSON root is Name[] an.

SQL setzt Name in Kleinbuchstaben und macht aus anderen Zeichen Unterstriche, aus Order Line wird also order_line. Ganze Zahlen sind BIGINT, andere Zahlen sind DOUBLE, Booleans sind BOOLEAN und werden als 1 oder 0 geschrieben, Zeichenketten sind TEXT. Ein verschachteltes Objekt oder Array ist TEXT mit dem JSON-Text. Ein einfaches Anführungszeichen in einer Zeichenkette wird verdoppelt. Ein Schlüssel, der null ist oder in einer Zeile fehlt, ist nullable. Jedes Objekt ist ein INSERT.

Wo man es nutzt

  • Ein TypeScript-Interface aus einer API-Probe entwerfen.
  • Ein JSON-Array laden, wenn verschachtelte Felder JSON-Text bleiben dürfen.
  • Prüfen, dass ein Anführungszeichen in einem Namen als zwei Anführungszeichen gespeichert wird.

Fragen

Warum ist meta ein zweites Interface?

Es ist ein Objekt, also nennt TypeScript es ItemMeta. In SQL ist dasselbe Feld TEXT mit {"n":2}.

Warum ist eine Liste von Zahlen fehlgeschlagen?

Jedes Objekt wird eine Zeile. Eine Liste von Zahlen hat keine Spalten.