Online JSON til JSON Schema Generator

Generer robuste, standard-kompatible JSON Schema fra reel JSON—øjeblikkeligt, sikkert og gratis.

Dette værktøj tager en JSON-prøve og producerer et JSON Schema Draft-07 dokument, der præcist afspejler dens struktur, datatyper og begrænsninger. Al behandling sker i din browser for fuldstændigt privatliv. Ingen data uploades eller gemmes andre steder. Ideelt til API-dokumentation, validering og kodegenerering.

Konverter JSON til JSON Schema nedenfor

Sådan Fungerer Skemagenerering Under Motorhjelmen

At generere JSON Schema fra eksempel-JSON involverer mere end blot at matche felter til typer. Dette værktøj benytter flere nøgletrin for korrekthed og fuldstændighed:

  1. Parsing: Værktøjet parser dit JSON i henhold til ECMA-404, og rapporterer detaljerede fejl ved ugyldigt input eller tvetydige konstruktioner.
  2. Strukturel Analyse: Det bygger en træstruktur af dine data, og klassificerer hver egenskab og element efter JSON Schemas kerne-typer (objekt, array, string, number, integer, boolean, null).
  3. Rekursiv Gennemgang: Dybe og indlejrede strukturer—inklusive arrays af objekter eller indlejrede arrays—gennemgås rekursivt for at generere indlejrede skema-definitioner.
  4. Typeafledning og Sammenlægning: For hver egenskab eller array-element afledes typer. Hvor egenskaber eller elementer har blandede typer, udtrykkes 'type' som et array (union type) efter JSON Schema-specifikation.
  5. Påkrævet vs. Valgfri Detektion: Ved at analysere alle objekter på hvert niveau skelner værktøjet mellem altid tilstedeværende (påkrævet) og sommetider manglende (valgfri) nøgler.
  6. Værdibegrænsninger: Hvor muligt afleder værktøjet enums (mængde af tilladte værdier), min/max for tal, minLength/maxLength for strings, og formatangivelser (såsom 'email', 'uri' eller 'date-time').
  7. Håndtering af Kanttilfælde: Særlig opmærksomhed gives til tomme arrays, nulls og spredte strukturer—sikrer valide skemaer, der matcher reel verdens variationer.
  8. Schema-syntese: Det endelige skema genereres som et standard-kompatibelt Draft-07 dokument—klar til brug med værktøjer som Ajv, OpenAPI eller kodegenereringsbiblioteker.

Hvorfor Generere JSON Schema? Praktiske Anvendelser

  • Automatiseret Validering: Brug genererede skemaer til at håndhæve datakontrakter og validere indkommende payloads i dine API'er, mikrotjenester eller CLI'er.
  • API Dokumentation: Auto-generer dokumentation og interaktive udforskere (Swagger, Postman) med præcise data-definitioner.
  • Kodegenerering: Skab typesikre modeller eller validatorer i TypeScript, Python, Java og andre sprog ved at bruge dit schema som den eneste sandhed.
  • Testdatagenerering: Værktøjer som JSON Schema Faker eller Mockaroo bruger skemaer til at syntetisere realistiske mockdata til QA og belastningstest.
  • Refaktorering & Migration: Valider ældre eller ændrede datastrukturer og sikr kompatibilitet, når din backend udvikler sig.

Tekniske Funktioner

  • Draft-07 kompatibilitet for maksimal interoperabilitet med større validatorer og API-designplatforme.
  • Rekursiv analyse af enhver nestingsdybde—arrays i arrays, objekter i arrays og mere.
  • Præcis union type ('type' array) afledning for felter eller elementer, der varierer på tværs af prøver.
  • Automatisk detektion af enums, længde, mønster, format, min/max og andre almindelige begrænsninger.
  • Eksplícit understøttelse af nulls, tomme arrays/objekter og delvise registre.
  • Skemagenerering kører fuldstændigt i browseren. Dit input JSON forlader aldrig din enhed.

Teknisk Eksempel: Fra Eksempel-JSON til Draft-07 Skema

Eksempel JSON Input
{
  "transaction": {
    "id": "txn_abc123",
    "amount": 99.95,
    "currency": "USD",
    "status": "completed",
    "meta": {
      "ip": "203.0.113.1",
      "tags": ["recurring", null]
    }
  },
  "refunded": false,
  "notes": null
}
Genereret JSON Schema Output
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "transaction": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "amount": { "type": "number" },
        "currency": { "type": "string", "minLength": 3, "maxLength": 3 },
        "status": { "type": "string", "enum": ["completed"] },
        "meta": {
          "type": "object",
          "properties": {
            "ip": { "type": "string", "format": "ipv4" },
            "tags": {
              "type": "array",
              "items": { "type": ["string", "null"] }
            }
          },
          "required": ["ip", "tags"]
        }
      },
      "required": ["id", "amount", "currency", "status", "meta"]
    },
    "refunded": { "type": "boolean" },
    "notes": { "type": ["null"] }
  },
  "required": ["transaction", "refunded", "notes"]
}

Sådan Bruger Du Dette JSON til JSON Schema Værktøj

  1. Indsæt eller skriv dit eksempel-JSON i editoren nedenfor. Værktøjet accepterer alle gyldige JSON, fra simple objekter til dybt indlejrede strukturer.
  2. Klik 'Generer JSON Schema' for at oprette og se det genererede JSON Schema.
  3. Kopiér, rediger eller download skemaet. Integrer det direkte i dine API-definitioner, valideringslogik eller dokumentation.

Kodeeksempler til JSON-til-skema-generering

Se, hvordan du genererer JSON Schema fra JSON i forskellige programmeringssprog.

JavaScript (Node.js)
Install: npm install jsonschema-generator
const generateSchema = require('jsonschema-generator');
const data = {
  name: "Alice",
  age: 30,
  isActive: true,
  tags: ["user", "admin"]
};
const schema = generateSchema(data);
console.log(JSON.stringify(schema, null, 2));
JavaScript (Node.js) with generate-schema
Install: npm install generate-schema
const GenerateSchema = require('generate-schema');
const data = { name: "Alice", age: 30, tags: ["admin", "user"] };
const schema = GenerateSchema.json('User', data);
console.log(JSON.stringify(schema, null, 2));
Python with genson
Install: pip install genson
from genson import SchemaBuilder
sample = {"name": "Alice", "age": 30, "tags": ["user", "admin"]}
builder = SchemaBuilder()
builder.add_object(sample)
print(builder.to_json(indent=2))
Python with jsonschema-generate
Install: pip install jsonschema-generate
from jsonschema_generate import generate_schema
sample = {"name": "Alice", "age": 30, "tags": ["user", "admin"]}
schema = generate_schema(sample)
print(schema)
Go
Install: go get github.com/invopop/jsonschema
package main
import (
  "encoding/json"
  "fmt"
  "github.com/invopop/jsonschema"
)
type User struct {
  Name string   `json:"name"
  Age  int      `json:"age"
  Tags []string `json:"tags"
}
func main() {
  schema := jsonschema.Reflect(&User{})
  out, _ := json.MarshalIndent(schema, "", "  ")
  fmt.Println(string(out))
}
Java with jsonschema2pojo (CLI/Gradle/Maven)
Install: jsonschema2pojo CLI or plugin (see https://www.jsonschema2pojo.org/)
# Generate Java POJOs *from* a JSON Schema, not the reverse.
# For schema generation from Java, see tools like jackson-module-jsonSchema.
# See: https://github.com/FasterXML/jackson-module-jsonSchema
C# with NJsonSchema
Install: dotnet add package NJsonSchema
using NJsonSchema;
using Newtonsoft.Json.Linq;
var sample = JObject.Parse("{\"name\":\"Alice\",\"age\":30, \"tags\":[\"user\"]}");
var schema = await JsonSchema.FromSampleJsonAsync(sample.ToString());
Console.WriteLine(schema.ToJson());
PHP with swaggest/json-schema
Install: composer require swaggest/json-schema
require 'vendor/autoload.php';
use Swaggest\JsonSchema\Structure\ClassStructure;
$sample = ["name" => "Alice", "age" => 30, "tags" => ["user"]];
$schema = ClassStructure::exportSchema($sample);
echo json_encode($schema, JSON_PRETTY_PRINT);
Ruby with json_schemer
Install: gem install json_schemer
require 'json_schemer'
sample = { "name" => "Alice", "age" => 30, "tags" => ["admin", "user"] }
schema = JSONSchemer.schema(sample)
puts schema.to_json
Bash (with Python genson)
Install: pip install genson
echo '{"name":"Alice","age":30,"tags":["user","admin"]}' | genson | jq .
Rust with schemars
Install: cargo add schemars
use schemars::JsonSchema;
use serde::Serialize;
#[derive(Serialize, JsonSchema)]
struct User {
  name: String,
  age: u32,
  tags: Vec<String>,
}
fn main() {
  let schema = schemars::schema_for!(User);
  println!("{}", serde_json::to_string_pretty(&schema).unwrap());
}
Scala with com.github.andyglow:jsonschema
Install: libraryDependencies += "com.github.andyglow" %% "jsonschema" % "0.7.7"
import json.schema._
case class User(name: String, age: Int, tags: List[String])
val schema = Json.schema[User]
println(schema.asSpray.prettyPrint)
TypeScript with typescript-json-schema
Install: npm install -g typescript-json-schema
# Generate schema from a TypeScript interface:
typescript-json-schema tsconfig.json User --out schema.json
# See https://github.com/YousefED/typescript-json-schema
Dart (manual, no auto-inference)
Install: None (write schema manually)
// Dart does not have an automatic JSON Schema generator yet.
// Manually define schema as a Dart Map or use online tools.