Tool Kumar 도구
JSON Schema 생성기
대표적인 JSON 문서로 JSON Schema 초안을 만듭니다. 결과는 관찰된 구조를 설명하며, 유효성 검사를 위한 출발점이 됩니다.
도구 사용 방법
- 예시 문서를 붙여넣습니다.
- ‘변환’ 보기에서 JSON Schema를 선택합니다.
- 추론된 속성을 검토하고 스키마를 저장합니다.
사용 예제
중첩된 profile과 tags까지 포함해 샘플 객체로 생성한 스키마입니다. 이 객체 하나에 모든 속성이 들어 있으므로 모든 속성이 required입니다.
입력
{"name":"Ada","age":36,"active":true,"tags":["json","tools"],"profile":{"city":"London"}}출력
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Root",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"active": {
"type": "boolean"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"profile": {
"$ref": "#/$defs/Profile"
}
},
"required": ["name", "age", "active", "tags", "profile"],
"$defs": {
"Profile": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": ["city"]
}
}
}
required 속성이 결정되는 방식
레코드 여러 개로 스키마를 생성하면 required 목록에는 모든 레코드에 있는 키만 남습니다. 이 샘플에서는 두 사용자 모두 id와 email이 있지만 phone은 첫 번째 사용자에게만 있으므로, phone은 스키마에 기술되지만 required에는 포함되지 않습니다.
Input:
[{"id":1,"email":"ada@example.com","phone":"+44 20 7946 0000"},{"id":2,"email":"lin@example.com"}]
Generated schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Root",
"type": "array",
"items": {
"$ref": "#/$defs/RootItem"
},
"$defs": {
"RootItem": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"email": {
"type": "string",
"format": "email"
},
"phone": {
"type": "string"
}
},
"required": ["id", "email"]
}
}
}옵션 및 예외 사항
- 중첩된 객체와 배열은 재귀적으로 표현됩니다.
- 해당 위치의 샘플 객체가 모두 가진 속성만 required에 들어갑니다. 따라서 완전한 샘플 하나로는 관찰된 모든 속성이 required가 되며, 객체 배열에서는 일부 객체에 없는 키가 선택 사항이 됩니다.
- 일부 객체에서 null인 값은 속성을 선택 사항으로 만들지 않고, 속성 타입에 null을 추가합니다.
- 출력은 출발점일 뿐입니다. required를 검토하고, format, 범위, 패턴을 추가하며, API 명세가 보장하지 않는 내용은 삭제해야 합니다.
- 이 페이지는 스키마를 생성할 뿐, 문서를 스키마에 대해 검증하지는 않습니다. 생성하기 전에 ‘JSON 유효성 검사기’ 페이지에서 JSON 문법을 확인할 수 있습니다.
개인정보 보호 기본 적용
문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.
JSON Schema 생성기 자주 묻는 질문
- 생성기가 모든 속성을 required로 표시하나요?
- 샘플 객체가 모두 가진 속성만 required로 표시합니다. 완전한 샘플 하나는 모든 속성을 required로 표시하고, 배열 안의 일부 객체에 없는 키는 선택 사항이 됩니다. 스키마를 게시하기 전에 required 목록을 API 명세와 대조해 검토해야 합니다.
- 어떤 draft를 사용하나요?
- 출력은 JSON Schema Draft 2020-12를 선언하며 표준 type, properties 키워드를 사용합니다.
- 배열 항목의 구조도 추론하나요?
- 네. 객체 배열에서는 관찰된 객체 구조를 바탕으로 items 스키마를 만듭니다.