Онлайн генератор JSON към JSON схема

Генерирайте стабилни, съвместими с стандарти JSON схеми от реални JSON данни – мигновено, сигурно и безплатно.

Този инструмент приема примерен JSON и създава JSON Schema Draft-07 документ, който точно отразява неговата структура, типове данни и ограничения. Цялата обработка се извършва във вашия браузър за пълна поверителност. Данни не се качват или съхраняват никъде. Идеален за API документация, валидиране и генериране на код.

Конвертирайте JSON в JSON схема по-долу

Как работи генерирането на схема зад кулисите

Генерирането на JSON схема от примерен JSON включва повече от проста връзка между полета и типове. Този инструмент прилага няколко ключови стъпки за точност и пълнота:

  1. Парсване: Инструментът парсва вашия JSON според ECMA-404 и докладва детайлни грешки при неправилен формат или нееднозначни конструкции.
  2. Структурен анализ: Създава дървовидно представяне на вашите данни, класифицирайки всяко свойство и елемент според основните типове в JSON Schema (object, array, string, number, integer, boolean, null).
  3. Рекурсивно обхождане: Дълбоки и вложени структури — включително масиви от обекти или вложени масиви — се обхождат рекурсивно за генериране на вложени дефиниции на схеми.
  4. Извличане и сливане на типове: За всяко свойство или елемент се извличат типове. Когато има смесени типове, 'type' се изразява като масив (съюзен тип) според спецификацията на JSON Schema.
  5. Откриване на задължителни и незадължителни: Анализирайки всички обекти на всеки слой, инструментът различава ключове, които винаги присъстват (задължителни), от тези, които понякога липсват (незадължителни).
  6. Ограничения на стойности: Където е възможно, се извличат изброими стойности (enum), мин/макс за числа, минимална/максимална дължина за низове и подсказки за формат (например 'email', 'uri' или 'date-time').
  7. Обработка на краен случай: Отделя се специално внимание на празни масиви, null стойности и разредени структури — за да се гарантират валидни схеми, съобразени с реалната променливост.
  8. Създаване на схема: Крайният резултат се издава като стандартен Draft-07 документ — готов за използване с инструменти като Ajv, OpenAPI или библиотеки за генериране на код.

Защо да генерирате JSON схема? Практически приложения

  • Автоматизирана валидация: Използвайте генерираните схеми, за да налагате договори за данни и да валидирате входящи заявки в API-та, микросървиси или CLI инструменти.
  • API документация: Автоматично генерирайте документация и интерактивни изследователи (като Swagger, Postman) с точни определения на данните.
  • Генериране на код: Създавайте типобезопасни модели или валидатори в TypeScript, Python, Java и други езици, използвайки вашата схема като единствен източник на истина.
  • Генериране на тестови данни: Инструменти като JSON Schema Faker или Mockaroo използват схеми за синтез на реалистични тестови данни за QA и товарни тестове.
  • Рефакториране и миграция: Валидирайте наследени или променящи се структури на данни, гарантирайки съвместимост с развитието на бекенда ви.

Технически характеристики

  • Съвместимост с Draft-07 за максимална съвместимост с водещи валидатори и платформи за дизайн на API.
  • Рекурсивен анализ на всяка дълбочина на вложеност — масиви в масиви, обекти в масиви и др.
  • Точно извличане на съюзни типове ('type' като масив) за полета или елементи, които варират между примери.
  • Автоматично разпознаване на enum, дължина, шаблони, формати, мин/макс и други често срещани ограничения.
  • Явна поддръжка на null стойности, празни масиви/обекти и частични записи.
  • Генерирането на схемата се изпълнява изцяло в браузъра. Вашият входящ JSON не напуска устройството ви.

Технически пример: От примерен JSON към Draft-07 схема

Примерен JSON вход
{
  "transaction": {
    "id": "txn_abc123",
    "amount": 99.95,
    "currency": "USD",
    "status": "completed",
    "meta": {
      "ip": "203.0.113.1",
      "tags": ["recurring", null]
    }
  },
  "refunded": false,
  "notes": null
}
Генериран JSON схема изход
{
  "$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"]
}

Как да използвате този инструмент JSON към JSON схема

  1. Поставете или въведете вашия примерен JSON в редактора по-долу. Инструментът приема всеки валиден JSON — от прости обекти до дълбоко вложени структури.
  2. Кликнете върху „Генерирай JSON схема“, за да създадете и прегледате генерираната JSON схема.
  3. Копирайте, редактирайте или изтеглете схемата. Интегрирайте я директно във вашите API дефиниции, логика за валидация или документация.

Примери с код за генериране на схеми от JSON

Вижте как да генерирате JSON Schema от JSON на различни програмни езици.

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.