JSON데이터 설계 패턴

null vs missing

key가 아예 없는 경우와 null이 들어 있는 경우가 왜 다른 의미인지, API와 Schema에서 어떤 차이를 만드는지 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

json
{
  "nickname": null
}

설명

  • null은 값이 "비어 있음"을 나타내는 명시적 값이고, missing은 key 자체가 존재하지 않는 상태입니다.
  • 읽는 쪽에서는 둘을 전혀 다르게 해석할 수 있습니다. 예를 들어 nickname: null은 "의도적으로 비움"일 수 있고, key 없음은 "아직 보내지 않음"일 수 있습니다.
  • JSON Schema의 required는 key 존재 여부를 다룹니다. key가 존재하지만 값이 null인 경우는 별도 type 규칙으로 판단합니다.
  • PATCH API나 부분 업데이트에서는 null과 missing의 의미를 문서로 분명히 하지 않으면 데이터 삭제와 미수정이 섞이기 쉽습니다.
  • 좋은 API는 "없음", "알 수 없음", "의도적 초기화"를 한 값으로 뭉개지 않고 필요하면 구분합니다.

짧은 예제

text
PATCH 해석 예
- { "nickname": null } -> 닉네임을 비운다
- { } -> 닉네임을 건드리지 않는다

빠른 정리

상태의미 예시
key 없음보내지 않음, 수정하지 않음
null명시적으로 값 없음
required 위반key 자체가 빠짐
type 위반key는 있지만 값 종류가 맞지 않음

주의할 점

null과 missing을 같은 의미로 문서화하지 않으면, 소비자마다 다른 해석을 하게 됩니다. 특히 업데이트 API와 설정 병합 로직에서는 이 차이를 먼저 정하고 예제로까지 남겨 두는 편이 좋습니다.

참고 링크

2 sources