본문 바로가기

JSON 샘플 → JSON Schema

브라우저 처리

JSON 샘플에서 JSON Schema(2020-12) 초안을 만듭니다. 배열 항목을 모두 합쳐 items를 정하고, 모든 항목에 있는 키만 required에 넣으며 1과 1.5가 섞이면 number로 넓힙니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
JSON 샘플 → JSON Schema 샘플 실행

데이터 검증 규칙을 처음부터 쓰는 대신, 실제 데이터 한 건을 넣으면 그 모양에 맞는 JSON Schema 초안이 나옵니다. 객체는 properties와 required, 배열은 items, 값은 string·integer·number·boolean·null 같은 type으로 정리되고 맨 위에 $schema 주소가 붙습니다.

브라우저 처리
샘플 결과
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "score": { "type": "array", "items": { "type": "number" } }
  },
  "required": ["id", "name", "score"]
}
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

JSON 샘플 → JSON Schema 사용 가이드

데이터 검증 규칙을 처음부터 쓰는 대신, 실제 데이터 한 건을 넣으면 그 모양에 맞는 JSON Schema 초안이 나옵니다. 객체는 properties와 required, 배열은 items, 값은 string·integer·number·boolean·null 같은 type으로 정리되고 맨 위에 $schema 주소가 붙습니다.

배열은 첫 항목만 보지 않고 모든 항목을 합쳐 items를 정합니다. 점수 배열에 90과 87.5가 함께 있으면 integer가 아니라 number가 되고, 객체 배열에서 일부 항목에만 있는 키는 properties에는 넣되 required에서는 뺍니다.

한 자리에 문자열과 null처럼 단순 값이 섞이면 "type": ["string", "null"]로, 객체와 숫자처럼 구조가 다른 값이 섞이면 anyOf로 나눠 적습니다.

사용 방법

  1. 'JSON 샘플' 칸에 스키마를 만들 데이터 예시를 붙여 넣습니다.
  2. '실행'을 누르면 $schema, type, properties, required가 담긴 스키마가 나옵니다.
  3. 결과를 받아 minLength, format, enum 같은 세부 규칙을 직접 추가합니다.

예시: 점수 배열에 정수와 소수가 섞인 경우

입력
{"id":1,"name":"Kim","score":[90,87.5]}
결과
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "score": { "type": "array", "items": { "type": "number" } }
  },
  "required": ["id", "name", "score"]
}

실제 결과는 한 줄에 키 하나씩 펼쳐져 나오며, 여기서는 읽기 쉽게 줄였습니다.

이럴 때 쓰면 좋아요

  • API 요청 본문 검증 규칙의 뼈대를 실제 요청 예시로 만들 때
  • 설정 파일 형식을 문서화하고 편집기 자동 완성용 스키마를 만들 때
  • 데이터 파이프라인에 들어오는 레코드 형식을 고정해 두고 싶을 때
  • JSON Schema 검사기로 다른 데이터를 검사하기 위한 기준을 준비할 때

문제가 생겼을 때

선택 항목이어야 할 키가 required에 들어감

샘플이 한 건뿐이면 모든 키가 필수로 보입니다. 키가 빠진 항목까지 담은 배열을 넣거나, 결과의 required 목록에서 직접 지우세요.

소수가 올 수 있는 값이 integer로 나옴

샘플에 정수만 있었기 때문입니다. 소수 예시를 함께 넣으면 number로 바뀌고, 아니면 결과에서 integer를 number로 고치세요.

활용 팁

  • 빈 배열은 항목 모양을 알 수 없어 items 없이 type만 나옵니다. 항목이 있는 샘플을 넣으면 items까지 채워집니다.
  • 만든 스키마는 JSON Schema 검사기에 넣고 원래 샘플로 한 번 검사해 통과하는지 확인해 두면 안전합니다.

자주 묻는 질문

어떤 JSON Schema 버전으로 만들어지나요?

draft 2020-12 주소를 $schema에 넣습니다. 이 결과에 쓰인 키워드(type, properties, required, items, anyOf)는 draft-07에서도 같은 뜻으로 쓰입니다.

email이나 날짜 형식(format)도 추론하나요?

아니요. 문자열은 모두 type string으로만 나옵니다. format: email이나 date-time은 의도를 알고 있는 사람이 직접 추가해야 합니다.

additionalProperties는 들어가나요?

넣지 않습니다. 정의하지 않은 키를 막으려면 객체마다 "additionalProperties": false를 직접 추가하세요.