사용 방법
- JSON 샘플을 붙여넣거나 "예시 불러오기"를 클릭하세요.
- 루트 스키마의 제목(title)을 설정하세요.
- 스키마를 복사하거나 다운로드한 다음, format, pattern, 범위 같은 제약 조건을 추가하세요.
옵션 설명
- 루트 타입 이름
- 스키마의 title로 사용돼요.
예시
{"id": 1, "email": null}은 "id": {"type": "integer"}와 "email": {"type": "null"}을 가지며 두 키가 모두 required에 들어가는 스키마가 돼요.
예시
이메일이 첫 번째 레코드에만 있고 manager가 가끔 null인 사용자 레코드 두 개예요.
[
{ "id": 1, "name": "Ada", "email": "ada@example.com", "tags": ["admin"], "manager": null },
{ "id": 2, "name": "Grace", "tags": [], "manager": { "id": 1 } }
]
루트 타입 이름을 User로 설정하면 생성되는 스키마는 다음과 같아요.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "User",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } },
"manager": {
"anyOf": [
{ "type": "null" },
{ "type": "object", "properties": { "id": { "type": "integer" } }, "required": ["id"] }
]
}
},
"required": ["id", "name", "tags", "manager"]
}
}
두 번째 레코드에 email이 없으므로 email은 required에서 빠져요. 샘플에 null과 객체가 모두 나오므로 manager는 둘 중 어느 쪽이든 허용해요. 샘플 데이터가 다양할수록 스키마가 더 정확해지니 레코드를 하나가 아니라 여러 개 붙여넣으세요.
주요 활용
API 입력 검증. Ajv(JavaScript)나 jsonschema(Python) 같은 검증기에 스키마를 불러와 일치하지 않는 요청을 거부하세요.
API 문서화. properties를 OpenAPI의 components.schemas 섹션에 붙여넣어 출발점으로 삼으세요.
편집기 자동 완성. VS Code와 JetBrains IDE는 JSON Schema를 이용해 키를 제안하고 JSON 설정 파일의 실수를 표시할 수 있어요.
자주 묻는 질문
어떤 키가 필수(required)로 표시되나요?
샘플의 모든 객체에 있는 키예요. 배열에 키가 서로 다른 객체가 들어 있으면, 일부 항목에 없는 키는 required에서 빠져요.
OpenAPI에서 쓸 수 있나요?
OpenAPI 3.1은 JSON Schema 2020-12를 사용하므로 생성된 스키마를 components/schemas 아래에 그대로 넣을 수 있어요. OpenAPI 3.0에서는 ["string", "null"] 같은 type 배열을 nullable true로 바꾸세요.
이메일이나 date-time 같은 형식도 감지하나요?
아니요. 타입만 추론해요. 필요한 곳에 format, pattern, minimum 같은 키워드를 직접 추가하세요.
JSON이 업로드되나요?
아니요. 타입은 브라우저에서 생성되므로 실제 데이터가 담긴 API 응답도 기기 밖으로 나가지 않아요.
개인정보 보호
이 도구는 전적으로 브라우저에서 실행돼요. 파일과 텍스트는 기기에서 처리되며 서버로 업로드되지 않아요.