JSON Schema 생성기
JSON 데이터에서 표준 준수 JSON Schema 정의를 자동으로 생성
// JSON Schema가 자동으로 생성됩니다JSON Schema란 무엇인가요?
JSON Schema는 JSON 데이터 구조를 설명하고 검증하기 위한 사양입니다. 구조, 데이터 타입, 제약 조건에 대한 규칙을 정의하며 API 검증, 폼 검증, 설정 파일 검증 등에 널리 사용됩니다.
JSON Schema로 할 수 있는 것:
- 데이터 검증: JSON 데이터가 예상 형식과 제약 조건에 맞는지 확인
- 문서 생성: API 문서와 타입 정의 자동 생성
- 코드 인텔리전스: IDE에서 스마트 완성 및 타입 검사 획득
- 자동화 테스트: 테스트에서 응답 데이터 형식 자동 검증
이 도구는 JSON Schema Draft-07 사양을 지원하며 중첩 객체, 배열 타입, 열거값 등 복잡한 구조를 지능적으로 추론합니다.
사용 방법
- 왼쪽 입력 상자에 JSON 데이터를 붙여넣거나 예제를 클릭하여 예제 데이터 로드
- 옵션 구성: Schema ID 설정, 모든 필드 필수 여부, 기본값 추가 등 선택
- 해당 JSON Schema 정의가 오른쪽에 자동으로 생성됩니다
- 복사를 클릭하여 생성된 Schema를 클립보드에 복사
- 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 데이터를 만든 다음 이 도구를 사용하세요.