JSON Schema Generator

Automatisch standardkonforme JSON Schema-Definitionen aus JSON-Daten generieren

JSON-Eingabe
Zeilen: 1 | Zeichen: 0
JSON Schema-Ausgabe
// JSON Schema wird automatisch generiert
Eigenschaften: 0 | Zeilen: 1

Konfigurationsoptionen

Schema ID
Eindeutige Kennung für das Schema festlegen, typischerweise im URI-Format, verwendet um Schema in großen Systemen zu referenzieren und zu identifizieren
Alle Felder erforderlich
Wenn aktiviert, werden alle Eigenschaften zum required-Array hinzugefügt, was bedeutet dass diese Felder in den Daten vorhanden sein müssen
Standardwerte hinzufügen
Automatisch default-Eigenschaft basierend auf tatsächlichen Werten im Beispiel-JSON generieren, nützlich für Konfigurationsdateien
Feldbeschreibungen hinzufügen
Automatisch description-Feld für jede Eigenschaft hinzufügen, das den Datentyp und die Quelle beschreibt, hilfreich für Dokumentation
Strenger Modus
additionalProperties: false aktivieren um nicht definierte zusätzliche Eigenschaften zu verbieten und strikte Datenstruktur-Konsistenz zu gewährleisten

Was ist JSON Schema?

JSON Schema ist eine Spezifikation zur Beschreibung und Validierung von JSON-Datenstrukturen. Es definiert Regeln für Struktur, Datentypen, Einschränkungen und wird weit verbreitet für API-Validierung, Formularvalidierung, Konfigurationsdatei-Überprüfung verwendet.

Mit JSON Schema können Sie:

  • Datenvalidierung: Überprüfen ob JSON-Daten dem erwarteten Format und Einschränkungen entsprechen
  • Dokumentationsgenerierung: Automatisch API-Dokumentation und Typdefinitionen generieren
  • Code-Intelligenz: Intelligente Vervollständigung und Typprüfung in IDEs erhalten
  • Automatisierte Tests:: Automatische Validierung von Antwortdatenformat in Tests

Dieses Tool unterstützt die JSON Schema Draft-07-Spezifikation und leitet intelligent verschachtelte Objekte, Array-Typen, Enum-Werte und andere komplexe Strukturen ab.

Verwendung

  1. JSON-Daten in das linke Eingabefeld einfügen oder auf Beispiel klicken um Beispieldaten zu laden
  2. Optionen konfigurieren: Schema ID festlegen, wählen ob alle Felder erforderlich sind, Standardwerte hinzufügen usw.
  3. Die entsprechende JSON Schema-Definition wird automatisch rechts generiert
  4. Auf Kopieren klicken um das generierte Schema in die Zwischenablage zu kopieren
  5. Schema für API-Validierung, Formularvalidierung oder Konfigurationsdatei-Überprüfung verwenden

Beispiele

Einfaches Objekt-Schema

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

Verschachtelte Objekte und Arrays

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Datenvalidierungsbeispiel

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

Häufige Fragen (FAQ)

Q: Was sind häufige Anwendungsfälle für JSON Schema?

A: JSON Schema wird hauptsächlich verwendet für: API-Anfrage/Antwort-Validierung, Formulardaten-Validierung, Konfigurationsdatei-Formatprüfung, Datenbank-Dokument-Beschränkungen, automatisierte Testdaten-Validierung, IDE-Smart-Completion-Konfiguration. Es ist ein wichtiges Werkzeug für Datenspezifikation in der modernen Webentwicklung.

Q: Welche Schema-Version generiert dieses Tool?

A: Dieses Tool generiert Schema entsprechend der JSON Schema Draft-07-Spezifikation, der am weitesten verbreiteten Version, kompatibel mit den meisten Validierungsbibliotheken und Toolchains.

Q: Wie werden komplexe Array-Typen behandelt?

A: Das Tool analysiert automatisch die Struktur der Array-Elemente. Wenn Elemente Objekte sind, wird items-Definition generiert; wenn Typen inkonsistent sind, wird anyOf oder oneOf verwendet um mehrere mögliche Typen darzustellen; leere Arrays generieren leere items-Definition.

Q: Was bedeutet das required-Feld?

A: required ist ein String-Array, das Eigenschaftsnamen auflistet, die vorhanden sein müssen. Wenn eine Eigenschaft in required ist, kann sie bei der Validierung nicht fehlen. Eigenschaften nicht in required sind optional.

Q: Wie verwende ich das generierte Schema in Projekten?

A: Verwenden Sie Validierungsbibliotheken wie Ajv, jsonschema zur Datenvalidierung. In Node.js: const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. Frontend-Frameworks wie React, Vue haben Formular-Validierungskomponenten die JSON Schema unterstützen.

Q: Was bewirkt additionalProperties: false?

A: Diese Einstellung verbietet zusätzliche Eigenschaften die nicht im Schema definiert sind. Nützlich für Szenarien die strikte Datenstrukturkontrolle erfordern, um versehentliche Feld-Verschmutzung zu verhindern, kann aber bei zu großer Strenge Kompatibilitätsprobleme verursachen.

Q: Kann ich benutzerdefinierte Validierungsregeln hinzufügen?

A: Ja, bearbeiten Sie das Schema nach der Generierung manuell um weitere Einschränkungen hinzuzufügen. JSON Schema unterstützt umfangreiche Validierungsschlüsselwörter: minimum/maximum (Zahlenbereich), minLength/maxLength (Stringlänge), pattern (Regex-Match), enum (Enum-Werte), format (vordefinierte Formate wie email, uri), etc.

Q: Wie generiere ich JSON Schema aus TypeScript-Typen?

A: Dieses Tool leitet Schema aus JSON-Daten ab. Um aus TypeScript-Typen zu generieren, verwenden Sie Tools wie typescript-json-schema oder erstellen Sie zuerst Beispiel-JSON-Daten und verwenden dann dieses Tool.