JSON til TypeScript / Go / Rust struct-generator

Lim inn JSON, velg målspråk, få en idiomatisk typedefinisjon. Støtter TypeScript, Go, Rust, Kotlin, Java, C# og Python TypedDict. Drevet av quicktype, kjører i nettleseren.

  1. Lim inn et representativt JSON-eksempel i tekstområdet til venstre.
  2. Velg målspråk fra Mål-rullegardinmenyen.
  3. Klikk Generer. Første klikk laster motoren (~2–3 sekunder på 4G); påfølgende generasjoner er øyeblikkelige.
  4. Kopier resultatet, eller last ned med riktig filendelse.
Hva gjør det?

Genererer idiomatiske typer i målspråket ditt ved å utlede skjemaet fra ett eller flere JSON-eksempler. Felt-typer utledes — strenger forblir strenger, tall blir språkets numeriske type, booleanske blir bool, arrays blir slices/lister/arrays, nestede objekter blir nestede typer. Valgfrie felter (de som av og til er null eller mangler på tvers av eksempler) markeres som nullable i utdata. Drevet av quicktype-core, samme motor som ligger bak quicktype.io.

Eksempel

JSON-inndata:

{
  "name": "Ada",
  "age": 36,
  "active": true,
  "tags": ["math", "logic"]
}

TypeScript-utdata (mål = TypeScript, typenavn = User):

export interface User {
  name: string;
  age: number;
  active: boolean;
  tags: string[];
}

Vanlige fallgruver og hvordan håndtere dem

Type-utledning fra JSON har grunnleggende grenser — JSON bærer ikke nok informasjon til å fullt ut begrense et type-system. Mønstrene under dekker hvor den utledede typen kanskje ikke matcher det du vil ha.

  • Valgfri vs. påkrevd fra et enkelt eksempel. Et enkelt JSON-objekt kan ikke fortelle generatoren hvilke felter som er valgfrie. Gi flere eksempler (lim inn en JSON-array av representative objekter) slik at generatoren kan markere felter som av og til mangler som valgfrie.
  • Tomme arrays. `{"items": []}` produserer en array av `any` — generatoren har ikke noe element å utlede fra. Inkluder minst ett populert eksempel, eller fiks typen for hånd etter generering.
  • Heterogene array-elementer. En JSON-array `[1, "two"]` blir en union-type — resultatet kan være lite ergonomisk i enkelte målspråk (særlig Go). Hvis arrayet skal være homogent i de virkelige dataene, fiks eksempelet.
  • Datostrenger. JSON har ingen Date-type. ISO 8601-datostrenger utledes som `string`. quicktype kan av og til oppdage dem som Date i TypeScript-utdata — juster for hånd hvis du vil ha sterkere typing.
  • Numeriske ID-er som mister presisjon. JSON-tall > 2^53 (store 64-bit-ID-er) mister presisjon når de parses av JavaScript. Den genererte TypeScript-typen bruker `number` uansett. For 64-bit-presisjon, bruk `string` i JSON eller migrer til en `bigint`-type for hånd.
  • Underscore vs. camelCase-felter. Generatoren bevarer JSON-feltnavnene. Hvis JSON-en din bruker snake_case men målspråket forventer camelCase, bruker utdata snake_case-felter med serde/json-annotasjoner der det er relevant. Overstyr ved etterbehandling eller ved å bruke quicktype CLI-flagg.
Ofte stilte spørsmål

Hvorfor er den første Generer treg?

quicktype-motorbundet er rundt 465 KB gzippet. Det laster ved første Generer-klikk, som tar 2–3 sekunder på 4G. Etterpå er modulen bufret resten av sideøkten — og nettleseren bufrer den på tvers av besøk, så påfølgende første-klikk er også øyeblikkelige med mindre cachen er tømt.

Kan jeg generere fra flere JSON-eksempler?

Pakk eksemplene dine i en JSON-array og lim inn arrayen. Generatoren utleder unionen av felter sett på tvers av eksempler og markerer felter som valgfrie når de mangler fra minst ett. Dette er den riktige måten å sikre at de genererte typene tolererer variasjon i ekte data.

Hvilket språk bør jeg velge for backend-kode?

Match det prosjektet ditt allerede bruker. Go-utdata bruker standard struct-tags for `encoding/json`. Rust bruker serde derives. Kotlin bruker kotlinx.serialization-annotasjoner. Java produserer Jackson-kompatible POJO-er. Valget er prosjekt-spesifikt, ikke preferanse-basert.

Bevares felt-kommentarer?

JSON har ingen kommentarsyntaks, så det er ingen kommentarer i input å overføre. quicktype kan inkludere doc-kommentarer i utdata for noen språk — disse er auto-genererte beskrivelser, ikke brukerinnhold.

Lastes JSON-en min opp?

Nei. Alt kjører i nettleseren din — input behandles lokalt av JavaScript-modulen quicktype-core på denne siden. quicktype-core selv laster fra samme opphav (denne sidens statiske aktivavert); ingen tredjepartsserver ser dataene dine.

Hvor stort JSON-eksempel kan jeg bruke?

Opp til omtrent 5 MB JSON før generatoren begynner å ta merkbar tid. Generatoren er designet for representative eksempler, ikke fulle datasett — typisk er en håndfull objekter nok til å utlede et rent skjema.