온라인 JSON to JSON Schema 생성기

실제 JSON에서 견고하고 표준에 맞는 JSON 스키마를 즉시, 안전하게, 무료로 생성하세요.

이 도구는 JSON 샘플을 받아 그 구조, 데이터 타입, 제약조건을 정확히 반영한 JSON Schema Draft-07 문서를 생성합니다. 모든 처리는 브라우저 내에서 이루어져 완벽한 개인정보 보호가 보장됩니다. 데이터는 업로드되거나 저장되지 않습니다. API 문서화, 검증, 코드 생성에 이상적입니다.

아래에 JSON을 입력하여 JSON 스키마로 변환하세요

스키마 생성 작업 원리

샘플 JSON에서 JSON 스키마를 생성하는 것은 단순히 필드와 타입을 매핑하는 것 이상입니다. 이 도구는 정확성과 완성도를 위해 다음 핵심 단계를 수행합니다:

  1. 파싱: ECMA-404에 따라 JSON을 파싱하며, 잘못된 입력이나 애매한 구조에 대해 상세한 오류를 보고합니다.
  2. 구조 분석: 데이터의 트리 구조를 생성하고 각 속성 및 요소를 JSON 스키마 핵심 타입(객체, 배열, 문자열, 숫자, 정수, 불리언, 널)으로 분류합니다.
  3. 재귀적 탐색: 객체 배열이나 중첩 배열 같은 깊고 복잡한 구조를 재귀적으로 순회하여 중첩된 스키마 정의를 생성합니다.
  4. 타입 추론 및 병합: 각 속성 혹은 배열 요소의 타입을 추론합니다. 혼합 타입인 경우 JSON 스키마 명세에 따라 'type'을 배열(유니언 타입)로 표현합니다.
  5. 필수 및 선택 속성 식별: 각 수준의 모든 객체를 분석하여 항상 존재하는 키(필수)와 가끔 누락되는 키(선택)를 구분합니다.
  6. 값 제약조건: 가능한 경우 허용 값 집합(열거형), 숫자의 최소/최대, 문자열의 최소/최대 길이, 'email', 'uri', 'date-time' 같은 포맷 힌트를 추론합니다.
  7. 예외 처리: 빈 배열, 널 값, 희소 구조에 특별히 주의를 기울여 실제 데이터 변동성을 반영하는 유효한 스키마를 생성합니다.
  8. 스키마 합성: 최종 스키마는 Ajv, OpenAPI, 코드 생성 라이브러리 등과 사용 가능한 표준 준수 Draft-07 문서로 출력됩니다.

JSON 스키마 생성 이유와 활용

  • 자동화된 검증: 생성된 스키마로 API, 마이크로서비스, CLI에서 데이터 계약을 강제하고 입력 데이터를 검증할 수 있습니다.
  • API 문서화: 정확한 데이터 정의를 통해 Swagger 또는 Postman 같은 도구로 문서 및 인터랙티브 탐색기 자동 생성.
  • 코드 생성: 스키마를 단일 진실 소스로 활용해 TypeScript, Python, Java 등에서 타입 안전 모델 또는 검증기를 생성합니다.
  • 테스트 데이터 생성: JSON Schema Faker, Mockaroo 같은 도구가 스키마를 이용해 QA 및 부하 테스트용 현실적인 모의 데이터를 합성합니다.
  • 리팩토링 및 마이그레이션: 레거시 또는 변경된 데이터 구조를 검증해 백엔드 진화에 따른 호환성을 확보합니다.

기술적 특징

  • 주요 검증기 및 API 설계 플랫폼과 최대 호환성을 위한 Draft-07 지원.
  • 어떤 중첩 깊이도 재귀적으로 분석—배열 내 배열, 배열 내 객체 등 모두 포함.
  • 샘플 간 타입이 다른 필드 및 요소에 대해 정확한 유니언 타입('type' 배열) 추론.
  • 열거형, 길이, 패턴, 포맷, 최소/최대 등 일반적인 제약조건 자동 감지.
  • 널, 빈 배열/객체, 부분 기록을 명시적으로 지원.
  • 스키마 생성이 완전히 브라우저 내에서 이루어집니다. 입력 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 to JSON Schema 도구 사용법

  1. 예제 JSON을 아래 편집기에 붙여넣거나 입력하세요. 간단한 객체부터 깊게 중첩된 구조까지 모든 유효한 JSON을 지원합니다.
  2. 'JSON 스키마 생성' 버튼을 클릭해 생성된 JSON 스키마를 확인하세요.
  3. 스키마를 복사, 편집하거나 다운로드하세요. API 정의, 검증 로직, 문서에 바로 통합할 수 있습니다.

JSON에서 스키마 생성용 코드 예제

다양한 프로그래밍 언어에서 JSON으로부터 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.