JSON Schema 생성기

JSON 데이터에서 표준 준수 JSON Schema 정의를 자동으로 생성

JSON 입력
행 수: 1 | 문자 수: 0
JSON Schema 출력
// JSON Schema가 자동으로 생성됩니다
속성: 0 | 행 수: 1

구성 옵션

Schema ID
Schema의 고유 식별자를 설정합니다. 일반적으로 URI 형식을 사용하며 대규모 시스템에서 Schema를 참조하고 식별하는 데 사용됩니다
모든 필드 필수
활성화하면 모든 속성이 required 배열에 추가되어 이 필드들이 데이터에 반드시 존재해야 합니다
기본값 추가
샘플 JSON의 실제 값을 기반으로 default 속성을 자동 생성합니다. 기본값이 필요한 설정 파일에 유용합니다
필드 설명 추가
각 속성에 description 필드를 자동으로 추가하여 데이터 타입과 출처를 설명합니다. 문서 생성에 도움이 됩니다
엄격 모드
additionalProperties: false를 활성화하여 Schema에 정의되지 않은 추가 속성을 금지하고 데이터 구조의 엄격한 일관성을 보장합니다

JSON Schema란 무엇인가요?

JSON Schema는 JSON 데이터 구조를 설명하고 검증하기 위한 사양입니다. 구조, 데이터 타입, 제약 조건에 대한 규칙을 정의하며 API 검증, 폼 검증, 설정 파일 검증 등에 널리 사용됩니다.

JSON Schema로 할 수 있는 것:

  • 데이터 검증: JSON 데이터가 예상 형식과 제약 조건에 맞는지 확인
  • 문서 생성: API 문서와 타입 정의 자동 생성
  • 코드 인텔리전스: IDE에서 스마트 완성 및 타입 검사 획득
  • 자동화 테스트: 테스트에서 응답 데이터 형식 자동 검증

이 도구는 JSON Schema Draft-07 사양을 지원하며 중첩 객체, 배열 타입, 열거값 등 복잡한 구조를 지능적으로 추론합니다.

사용 방법

  1. 왼쪽 입력 상자에 JSON 데이터를 붙여넣거나 예제를 클릭하여 예제 데이터 로드
  2. 옵션 구성: Schema ID 설정, 모든 필드 필수 여부, 기본값 추가 등 선택
  3. 해당 JSON Schema 정의가 오른쪽에 자동으로 생성됩니다
  4. 복사를 클릭하여 생성된 Schema를 클립보드에 복사
  5. API 검증, 폼 검증 또는 설정 파일 검증 등에 Schema 사용

사용 예제

단순 객체 Schema

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

중첩 객체와 배열

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

데이터 검증 예제

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

자주 묻는 질문 (FAQ)

Q: JSON Schema의 일반적인 사용 사례는 무엇인가요?

A: JSON Schema는 주로 다음에 사용됩니다: API 요청/응답 검증, 폼 데이터 검증, 설정 파일 형식 검사, 데이터베이스 문서 제약, 자동화 테스트 데이터 검증, IDE 스마트 완성 설정. 현대 웹 개발에서 데이터 명세의 중요한 도구입니다.

Q: 이 도구가 생성하는 Schema 버전은 무엇인가요?

A: 이 도구는 JSON Schema Draft-07 사양에 따라 Schema를 생성합니다. 가장 널리 지원되는 버전으로 대부분의 검증 라이브러리와 툴체인과 호환됩니다.

Q: 복잡한 배열 타입은 어떻게 처리되나요?

A: 도구가 자동으로 배열 요소의 구조를 분석합니다. 요소가 객체면 items 정의가 생성되고, 타입이 일치하지 않으면 anyOf 또는 oneOf로 여러 가능한 타입을 표현합니다. 빈 배열은 빈 items 정의를 생성합니다.

Q: required 필드는 무엇을 의미하나요?

A: required는 반드시 존재해야 하는 속성 이름을 나열하는 문자열 배열입니다. 속성이 required에 있으면 검증 시 누락될 수 없습니다. required에 없는 속성은 선택 사항입니다.

Q: 프로젝트에서 생성된 Schema를 어떻게 사용하나요?

A: Ajv, jsonschema 등의 검증 라이브러리를 사용하여 데이터 검증을 수행합니다. Node.js에서: const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. React, Vue 같은 프론트엔드 프레임워크에는 JSON Schema를 지원하는 폼 검증 컴포넌트가 있습니다.

Q: additionalProperties: false는 무엇을 하나요?

A: 이 설정은 Schema에 정의되지 않은 추가 속성을 금지합니다. 데이터 구조를 엄격하게 제어해야 하는 시나리오에서 유용하며, 의도치 않은 필드 오염을 방지하지만 너무 엄격하면 호환성 문제가 발생할 수 있습니다.

Q: 사용자 정의 검증 규칙을 추가할 수 있나요?

A: 네, 생성 후 Schema를 수동으로 편집하여 더 많은 제약을 추가할 수 있습니다. JSON Schema는 풍부한 검증 키워드를 지원합니다: minimum/maximum (숫자 범위), minLength/maxLength (문자열 길이), pattern (정규식 매치), enum (열거값), format (email, uri 등 사전 정의된 형식) 등.

Q: TypeScript 타입에서 JSON Schema를 생성하려면?

A: 이 도구는 JSON 데이터에서 Schema를 추론합니다. TypeScript 타입에서 Schema를 생성하려면 typescript-json-schema 같은 도구를 사용하거나, 먼저 샘플 JSON 데이터를 만든 다음 이 도구를 사용하세요.