JSON → TypeBox

JSON zu TypeBox Schema-Generator (Schneller JSON-Schema-Typ-Provider)

Konvertieren Sie JSON-Strukturen in hochperformante TypeBox Type.Object-Definitionen für Fastify, Ajv und TypeScript-Laufzeitvalidierung.

Voreinstellungen:
Root:
20 EigenschaftenTiefe: 3
Quell-JSON-Nutzlast
import { Type, Static } from '@sinclair/typebox';

UserProfileSchema = Type.Object({
  id: Type.String(),
  email: Type.String({ format: 'email' }),
  username: Type.String(),
  displayName: Type.String(),
  role: Type.String(),
  isVerified: Type.Boolean(),
  tenant: Type.Object({
    id: Type.String(),
    name: Type.String(),
    tier: Type.String(),
    activeSeats: Type.Integer(),
    billingContact: Type.String({ format: 'email' }),
  }),
  preferences: Type.Object({
    theme: Type.String(),
    notificationsEnabled: Type.Boolean(),
    locale: Type.String(),
    timezone: Type.String(),
  }),
  tags: Type.Array(Type.String()),
  lastLoginAt: Type.String({ format: 'date-time' }),
  createdAt: Type.String({ format: 'date-time' }),
});

UserProfile = Static<typeof UserProfileSchema>;
20
Inferierte Eigenschaften
Ebene 3
Max. AST-Hierarchietiefe
~35M ops/s
TypeCompiler JIT-Geschwindigkeit

Sofortige TypeBox-Schema-Generierung

Parst beliebige JSON-Daten in statische TypeBox Type.Object-Definitionen mit automatischer Formaterkennung für UUID, ISO-Zeitstempel und E-Mails.

100% Client-Seitige Privatsphäre

Kein Server-Upload. Ihre JSON-Nutzlasten, API-Schemas und Datenmodelle werden vollständig in der lokalen Sandbox Ihres Browsers kompiliert.

Native Fastify- & Ajv-Integration

Erzeugt 100% JSON Schema Draft-07/2020-12 kompatible Typen mit Static<typeof T>-Inferenz, TypeCompiler JIT-Geschwindigkeit und Fastify-Type-Provider-Hooks.

Technische Referenz & Architektur-Leitfaden

JSON to TypeBox Schema Generator Entwickler-Handbuch — Referenz-Leitfaden

Konvertieren Sie JSON-Strukturen in hochperformante TypeBox Type.Object-Definitionen für Fastify, Ajv und TypeScript-Laufzeitvalidierung.

Wichtige Parameter & Steuerelemente

Type.ObjectSchemaBuilder (Objekt)

Erstellt eine standardkonforme JSON-Schema-Objektdefinition mit typisierten Eigenschaften, Validierungsregeln und nativer TypeScript-Typinferenz.

Standard: Type.Object({ ... })
Static<typeof T>TypeScript-Typdienstprogramm

Extrahiert die statische TypeScript-Schnittstelle zur Compile-Zeit direkt aus einem TypeBox-Laufzeitschema und verhindert redundante Typdeklarationen.

Standard: type User = Static<typeof UserSchema>
TypeCompiler.CompileJIT-Compiler (Validierung)

Kompiliert ein TypeBox-Schema mittels Codegenerierung und V8-JIT-Optimierung in eine extrem schnelle Validierungsfunktion für maximalen Durchsatz.

Standard: const C = TypeCompiler.Compile(T)
Type.OptionalSchema-Modifikator

Kennzeichnet eine Eigenschaft als optional, schließt sie aus dem JSON-Schema-Array 'required' aus und typisiert sie in TypeScript als (key?: T).

Standard: Type.Optional(Type.String())
additionalPropertiesSchemaOption (boolean)

Steuert, ob nicht deklarierte Eigenschaften bei der Validierung zugelassen sind, um Prototype-Pollution und undokumentierte Payload-Felder abzuwehren.

Standard: additionalProperties: false

Profi-Tipps & Best Practices

Integrieren Sie

Integrieren Sie @fastify/type-provider-typebox mit fastify.withTypeProvider<TypeBoxTypeProvider>(). Fastify nutzt TypeBox-Schemas simultan für blitzschnelle Ajv-Validierung, optimierte JSON-Serialisierung via fast-json-stringify und automatische OpenAPI/Swagger-Generierung ohne doppelte Typdefinitionen.

Vermeiden Sie bei

Vermeiden Sie bei hochfrequentierten HTTP-Endpunkten Aufrufe von Value.Check() oder Neukompilierungen im Request-Handler. Kompilieren Sie Schemas einmalig beim Anwendungsstart mit TypeCompiler.Compile(Schema), um von V8-JIT-Code mit bis zu 100-fach höherer Geschwindigkeit zu profitieren.

Konfigurieren Sie {

Konfigurieren Sie { additionalProperties: false } auf Root- und verschachtelten Objektebenen für öffentliche APIs. Dadurch werden nicht deklarierte Attribute zuverlässig blockiert und Mass-Assignment-Schwachstellen verhindert.

Versehen Sie Zeichenfolgen-Schemas mit

Versehen Sie Zeichenfolgen-Schemas mit standardisierten Attributen wie Type.String({ format: 'uuid' }) oder Type.String({ format: 'date-time' }). TypeBox übergibt diese Metadaten transparent an das JSON-Schema für exakte Ajv-Formatprüfung und Dokumentation.

Häufige Fallstricke & Fehlerbehebung

Statische Typinferenz liefert any oder TypeScript wirft Rekursionsfehler TS2589

Stellen Sie sicher, dass @sinclair/typebox mindestens auf Version 0.31.0 aktualisiert ist. Verwenden Sie für rekursive oder selbstreferenzielle Datenstrukturen den Wrapper Type.Recursive(This => Type.Object({ ... })), damit der TypeScript-Compiler die Typen fehlerfrei auflösen kann.

Optionale Eigenschaften lehnen null ab oder schlagen in Ajv fehl

Im JSON-Schema bedeutet das Fehlen einer Eigenschaft nicht automatisch null. Verwenden Sie Type.Optional(Type.String()) für weglassbare Felder und Type.Union([Type.String(), Type.Null()]) für explizite Null-Werte. Für beide Fälle kombinieren Sie: Type.Optional(Type.Union([Type.String(), Type.Null()])).

Hohe Latenzspitzen durch Schema-Kompilierung in Request-Handlern

TypeCompiler.Compile() generiert dynamischen JavaScript-Code über new Function(). Rufen Sie diese Methode niemals innerhalb von Routenhandlern oder Schleifen auf, sondern instanziieren Sie kompilierte Prüfroutinen als modulweite Singletons beim Serverstart.

Häufig gestellte Fragen (FAQ)

Wie unterscheidet sich TypeBox von Zod, Yup oder Joi?▼

Im Gegensatz zu Zod, Yup oder Joi verzichtet TypeBox auf proprietäre Validierungs-Engines und erzeugt stattdessen standardkonforme JSON-Schema-Objekte (Draft-07 / 2020-12) gepaart mit statischer TypeScript-Typinferenz (Static<typeof T>). Zusammen mit TypeCompiler oder Ajv ist TypeBox drastisch schneller (oft 10- bis 100-mal) und fügt sich nahtlos in das OpenAPI- und Fastify-Ökosystem ein.

Können TypeBox-Definitionen als Standard-JSON-Schema exportiert werden?▼

Ja. TypeBox-Schemas sind zur Laufzeit bereits native JSON-Schema-Objekte. Ein einfacher Aufruf von JSON.stringify(Schema) liefert valides JSON-Schema ohne Kompilierungs- oder Transformationsschritt, bereit für Ajv, Swagger oder externe Validatoren.

Wie extrahiere ich TypeScript-Typen aus einem TypeBox-Schema?▼

Importieren Sie das Typ-Hilfsmittel Static aus @sinclair/typebox und deklarieren Sie: type User = Static<typeof UserSchema>;. Der resultierende Typ spiegelt alle erforderlichen, optionalen und verknüpften Attribute mit vollständiger statischer Typsicherheit wider.

Unterstützt TypeBox Date- und BigInt-Typen?▼

Ja, TypeBox bietet Type.Date() und Type.BigInt(). Da natives JSON diese Typen jedoch nicht serialisieren kann, erzeugen sie erweiterte Schemadefinitionen. Für reguläre JSON-REST-Schnittstellen empfiehlt sich Type.String({ format: 'date-time' }) für ISO-Datumsangaben und Type.Integer() für Zahlen.

Funktioniert TypeBox vollständig im Browser ohne Backend-Abhängigkeit?▼

Ja. TypeBox besitzt keinerlei externe Abhängigkeiten (Zero Dependencies) und läuft einwandfrei in modernen Browsern, Node.js, Deno, Bun und Cloudflare Workers bei minimalem Speicherbedarf (~15 KB minifiziert).

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →