Generador en línia de JSON a JSON Schema
Genera esquemes JSON robustos i que compleixen estàndards a partir de JSON real—ràpid, segur i gratuït.
Aquesta eina pren una mostra JSON i crea un document JSON Schema Draft-07 que reflecteix amb precisió la seva estructura, tipus de dades i restriccions. Tot el processament es fa al navegador per garantir la privacitat completa. Cap dada es puja ni s'emmagatzema enlloc. Ideal per a documentació d'API, validació i generació de codi.
Converteix JSON a JSON Schema a continuació
Com funciona la generació de l'esquema internament
Generar JSON Schema a partir d'una mostra JSON implica més que mapar camps a tipus. Aquesta eina segueix diversos passos clau per a la correcció i exhaustivitat:
- Anàlisi sintàctica: L'eina analitza el teu JSON segons ECMA-404, informant d'errors detallats per entrada mal formada o constructes amb ambigüitat.
- Anàlisi estructural: Construeix una representació en arbre de les teves dades, classificació de propietats i elements segons els tipus bàsics de JSON Schema (objecte, array, cadena, número, enter, booleà, null).
- Recorregut recursiu: S'analitzen recursivament les estructures profundes i aniuades—incloent arrays d'objectes o arrays aniuats—per generar definicions d'esquema també aniuades.
- Inferència i fusió de tipus: Per a cada propietat o element d'array s'inferen els tipus. Quan hi ha tipus mixtos, el camp 'type' s'expressa com una matriu (tipus unió) segons l'especificació JSON Schema.
- Detecció de requerits vs. opcionals: Analitzant tots els objectes a cada nivell, l'eina distingeix entre claus sempre presents (requerides) i ocasionalment absents (opcions).
- Restriccions de valor: Quan és possible, s'inferen enums (valors permesos), min/màxim per números, minLength/maxLength per cadenes, i suggeriments de format (com 'email', 'uri' o 'date-time').
- Gestió de casos límit: S'hi presta especial atenció a arrays buits, valors null i estructures disperses—garantint esquemes vàlids que s'ajusten a la variabilitat real.
- Síntesi de l'esquema: L'esquema final s'emet com un document estandarditzat Draft-07—preparat per a eines com Ajv, OpenAPI o biblioteques de generació de codi.
Per què generar JSON Schema? Usos pràctics
- Validació automatitzada: Utilitza esquemes generats per fer complir contractes de dades i validar les càrregues entrants en les teves APIs, microserveis o línies d'ordres.
- Documentació d'API: Autogenera documentació i exploradors interactius (Swagger, Postman) amb definicions de dades precises.
- Generació de codi: Crea models o validadors amb tipatge fort en TypeScript, Python, Java i altres llenguatges usant l'esquema com a font única de veritat.
- Generació de dades de prova: Eines com JSON Schema Faker o Mockaroo utilitzen esquemes per sintetitzar dades simulades realistes per a proves QA i de càrrega.
- Refactorització i migració: Valida estructures de dades antigues o que evolucionen, assegurant compatibilitat a mesura que el teu backend canvia.
Característiques tècniques
- Compatibilitat amb Draft-07 per a màxima interoperabilitat amb validadors i plataformes de disseny d'API principals.
- Anàlisi recursiva de qualsevol profunditat d'anidament—arrays dins arrays, objectes dins arrays, i més.
- Inferència precisa de tipus unió (matriu 'type') per a camps o elements que varien entre mostres.
- Detecció automàtica d'enums, longitud, patrons, formats, min/màxim i altres restriccions comunes.
- Suport explícit per a nulls, arrays/objects buits i registres parcials.
- La generació de l'esquema es fa completament al navegador. El teu JSON d'entrada mai surt del teu dispositiu.
Exemple tècnic: De JSON mostra a esquema Draft-07
Entrada JSON d'exemple
{ "transaction": { "id": "txn_abc123", "amount": 99.95, "currency": "USD", "status": "completed", "meta": { "ip": "203.0.113.1", "tags": ["recurring", null] } }, "refunded": false, "notes": null }Esquema 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"] }
Com utilitzar aquesta eina de JSON a JSON Schema
- Enganxa o escriu el teu JSON d'exemple a l'editor a continuació. L'eina accepta qualsevol JSON vàlid, des d'objectes simples fins a estructures profundament aniuades.
- Prem 'Genera l'Esquema JSON' per generar i veure l'esquema JSON produït.
- Copia, edita o descarrega l'esquema. Integra'l directament a les definicions de la teva API, a la lògica de validació o a la documentació.
Exemples de Codi per a la Generació d'Esquemes des de JSON
Descobreix com generar un esquema JSON a partir de JSON en diversos llenguatges de programació.
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.