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:
- Parsing: Værktøjet parser dit JSON i henhold til ECMA-404, og rapporterer detaljerede fejl ved ugyldigt input eller tvetydige konstruktioner.
- 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).
- Rekursiv Gennemgang: Dybe og indlejrede strukturer—inklusive arrays af objekter eller indlejrede arrays—gennemgås rekursivt for at generere indlejrede skema-definitioner.
- 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.
- 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.
- 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').
- 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.
- 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
- Indsæt eller skriv dit eksempel-JSON i editoren nedenfor. Værktøjet accepterer alle gyldige JSON, fra simple objekter til dybt indlejrede strukturer.
- Klik 'Generer JSON Schema' for at oprette og se det genererede JSON Schema.
- 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-jsonSchemaC# 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_jsonBash (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-schemaDart (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.