Generator online JSON la JSON Schema
Generați schema JSON robustă, conformă cu standardele, din JSON real – instantaneu, securizat și gratuit.
Acest instrument preia un exemplu JSON și produce un document JSON Schema Draft-07 care reflectă precis structura, tipurile de date și constrângerile acestuia. Toate procesele se realizează în browser, pentru confidențialitate totală. Nu se încarcă și nu se stochează date nicăieri. Ideal pentru documentație API, validare și generare de cod.
Convertește JSON în JSON Schema mai jos
Cum funcționează generarea schemei în detaliu
Generarea unui JSON Schema dintr-un JSON exemplu depășește maparea simplă a câmpurilor pe tipuri. Acest instrument aplică mai mulți pași esențiali pentru corectitudine și completitudine:
- Parsare: Instrumentul analizează JSON-ul conform ECMA-404, raportând erori detaliate pentru input greșit sau construcții ambigue.
- Analiză structurală: Construiește o reprezentare în arbore a datelor dvs., clasificând fiecare proprietate și element conform tipurilor de bază JSON Schema (obiect, array, string, number, integer, boolean, null).
- Parcurgere recursivă: Structurile complexe și imbricate – inclusiv array-uri de obiecte sau array-uri imbricate – sunt parcurse recursiv pentru a genera definiții de schemă imbricate.
- Inferență și combinare tipuri: Pentru fiecare proprietate sau element din array se inferă tipurile. Dacă au tipuri mixte, 'type' este exprimat ca un array (tip union) conform specificației JSON Schema.
- Detectarea câmpurilor obligatorii vs. opționale: Prin analizarea tuturor obiectelor la fiecare nivel, instrumentul distinge între chei prezente mereu (obligatorii) și cele uneori lipsă (opționale).
- Constrângeri pe valori: Unde este posibil, instrumentul inferă enumerații (set de valori permise), valori min/max pentru numere, lungimi minime/maxime pentru stringuri și sugestii de format (de exemplu 'email', 'uri', 'date-time').
- Gestionarea cazurilor speciale: Se acordă atenție specială array-urilor goale, valorilor null și structurilor rarefiate – asigurând scheme valide care reflectă variabilitatea reală.
- Sinteza schemei: Schema finală este emisă ca document Draft-07 conform standardelor – gata de utilizare cu instrumente precum Ajv, OpenAPI sau biblioteci de generare cod.
De ce să generezi JSON Schema? Utilizări practice
- Validare automată: Folosiți schemele generate pentru a impune contracte de date și a valida payload-uri primite în API-urile, microserviciile sau CLI-urile dvs.
- Documentație API: Generați automat documentație și exploratoare interactive (Swagger, Postman) cu definiții precise ale datelor.
- Generare cod: Creați modele sau validatoare tip safe în TypeScript, Python, Java și alte limbaje folosind schema ca sursă unică de adevăr.
- Generare date test: Instrumente precum JSON Schema Faker sau Mockaroo folosesc scheme pentru a crea date mock realiste pentru testare QA și simulări de încărcare.
- Refactorizare & migrare: Validați structuri de date vechi sau în schimbare, asigurând compatibilitatea pe măsură ce backend-ul evoluează.
Funcționalități tehnice
- Compatibilitate Draft-07 pentru interoperabilitate maximă cu validatoare majore și platforme de design API.
- Analiză recursivă la orice adâncime – array-uri în array-uri, obiecte în array-uri și altele.
- Inferență precisă a tipurilor union (array 'type') pentru câmpurile sau elementele cu tipuri variate în exemple.
- Detecția automată a enumerațiilor, lungimilor, tiparelor, formatului, valorilor min/max și altor constrângeri comune.
- Suport explicit pentru valori null, array-uri/obiecte goale și înregistrări parțiale.
- Generarea schemei se realizează integral în browser. JSON-ul dvs. nu părăsește dispozitivul.
Exemplu tehnic: De la JSON exemplu la schema Draft-07
JSON exemplu de intrare
{ "transaction": { "id": "txn_abc123", "amount": 99.95, "currency": "USD", "status": "completed", "meta": { "ip": "203.0.113.1", "tags": ["recurring", null] } }, "refunded": false, "notes": null }Schema JSON generată
{ "$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"] }
Cum se folosește acest instrument JSON la JSON Schema
- Lipiți sau tastați JSON-ul exemplu în editorul de mai jos. Instrumentul acceptă orice JSON valid, de la obiecte simple la structuri profund imbricate.
- Faceți clic pe „Generează schema JSON“ pentru a genera și vizualiza schema JSON obținută.
- Copiați, editați sau descărcați schema. Integrați-o direct în definițiile API, logica de validare sau documentația dvs.
Exemple de Cod pentru Generarea Schemelor din JSON
Află cum să generezi schema JSON din JSON în diverse limbaje de programare.
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.