MODOO HUB ← 모두의 툴
Dev · Instrument

JSON Schema 검증기

JSON 데이터가 Schema 규칙을 만족하는지 즉시 검증합니다

JSON Schema 검증기

JSON 데이터를 JSON Schema 규칙(type, required, properties, minimum/maximum, minLength/maxLength, pattern, additionalProperties, items)에 따라 재귀적으로 검증합니다. 다만 enum 검사 코드가 문자열 값을 처리하는 if(typeof data==='string') 블록 안에만 들어있어, 숫자·불리언 값에 대한 enum 위반은 전혀 감지되지 않고 그냥 통과합니다. 예를 들어 스키마가 {"type":"integer","enum":[1,2,3]}이고 실제 값이 99여도 오류 없이 유효 판정이 납니다. 또한 minItems·maxItems·uniqueItems·oneOf·anyOf·allOf·not·format 키워드는 아예 구현되어 있지 않아 스키마에 적어도 조용히 무시됩니다.

자주 묻는 질문

숫자나 불리언 값에 enum 제약을 걸어도 검증이 되나요?

아니요. enum을 검사하는 코드가 문자열 타입 전용 분기(if(typeof data==='string')) 안에만 존재해서, 숫자나 불리언 값은 enum 목록에 없는 값이어도 오류로 잡히지 않고 그대로 유효 판정을 받습니다. 예를 들어 {"type":"integer","enum":[1,2,3]} 스키마에 99를 넣어도 통과합니다.

왜 이런 일이 생기나요?

코드에서 enum 검사가 문자열 길이·패턴 검사와 같은 블록에 함께 묶여 있어, 숫자·불리언 값이 들어올 때는 그 블록 자체가 실행되지 않기 때문입니다. 타입별로 별도 처리해야 할 enum 검사가 문자열 처리 로직에 종속되어 버린 구조적 문제입니다.

배열 길이 제한(minItems/maxItems)도 검증하나요?

아니요. minItems, maxItems, uniqueItems 키워드는 이 도구에 전혀 구현되어 있지 않습니다. 스키마에 적어놓아도 조용히 무시되며, 배열이 아무리 짧거나 중복 값을 포함해도 오류가 나지 않습니다.

oneOf, anyOf, allOf, not 같은 조합 키워드는 지원하나요?

지원하지 않습니다. 이 키워드들이 포함된 스키마를 넣어도 해당 부분은 그냥 무시되고, 나머지 type·required·properties 등 지원되는 키워드만 검사됩니다.

format(예: email, date) 키워드도 검증되나요?

아니요. format 키워드는 구현되어 있지 않아 무시됩니다. 이메일 형식을 검증하려면 대신 pattern에 정규식을 직접 작성해야 합니다.

required, properties, additionalProperties는 정확히 동작하나요?

네. required 배열의 모든 필드 존재 여부, properties에 정의된 각 필드의 하위 스키마(재귀 검증), additionalProperties: false일 때 정의되지 않은 필드 검출까지 모두 올바르게 동작합니다. 문제는 enum과 배열/조합 키워드 미구현에 한정됩니다.

minimum/maximum, minLength/maxLength, pattern은 정확한가요?

네, 숫자의 minimum/maximum, 문자열의 minLength/maxLength/pattern 검사는 모두 값 타입에 맞게 올바르게 구현되어 있습니다.

이 도구는 어떤 스키마 버전을 기준으로 하나요?

Draft-07의 기본 키워드를 기준으로 하지만, 앞서 설명한 것처럼 enum이 문자열 값에만 적용되고 배열·조합 키워드가 아예 없다는 점에서 완전한 Draft-07 구현은 아닙니다. 정확한 검증이 중요하다면 AJV 같은 전용 라이브러리와 교차 확인하세요.