it-box

JSON 깊은 병합

두 JSON 객체를 재귀 병합하며 충돌 값은 오른쪽 객체로 덮어씁니다.

JSON 깊은 병합 도구 열기

기본 설정 객체와 덮어쓸 설정 객체를 깊이 병합해 최종 설정 하나를 만듭니다.

사용 순서

  1. 왼쪽 입력란에 기본 JSON 객체를 붙여 넣습니다.
  2. 오른쪽 입력란에 덮어쓸 값만 담은 객체를 붙여 넣습니다.
  3. 중첩 객체는 키 단위로 합쳐지고 배열은 통째로 바뀌었는지 결과에서 확인합니다.
  4. 결과를 복사해 설정 파일에 반영합니다.

예시

왼쪽 {"user":{"name":"Ada","roles":["reader"]}}와 오른쪽 {"user":{"roles":["editor"]}}를 합치면 {"user":{"name":"Ada","roles":["editor"]}}가 됩니다. name은 유지되고 roles 배열만 교체됩니다.

한계

두 입력 모두 최상위가 객체여야 합니다. 배열은 이어 붙이지 않고 오른쪽 배열로 통째로 대체됩니다. null은 키를 지우는 표시가 아니라 값 null로 덮어씁니다. 키 순서는 왼쪽 입력을 따르고, 오른쪽에만 있는 키는 뒤에 붙습니다. 중첩 깊이는 64단계, 각 입력은 2 MiB까지입니다.

보안 주의

운영 설정 위에 개발용 값을 덮는 순서로 합치면 오른쪽의 빈 값이나 null이 운영 값을 지울 수 있습니다. 결과에서 덮인 키를 왼쪽과 나란히 대조하고, 비밀 키 값이 들어 있으면 붙여 넣기 전에 가리세요.

배경 지식

설정 병합은 기본값 위에 환경별 값을 얹는 방식으로 자주 씁니다. 깊은 병합(deep merge)은 같은 키의 값이 둘 다 객체이면 안쪽까지 들어가 합치고, 그 밖의 경우에는 오른쪽 값으로 바꿉니다. 예를 들어 왼쪽이 객체이고 오른쪽이 숫자이면 숫자가 그대로 남고, 왼쪽에만 있는 키는 변화 없이 결과에 유지됩니다.

병합 결과가 기대와 다를 때는 대개 배열과 null에서 문제가 생깁니다. 병합 라이브러리마다 배열을 이어 붙이거나 키로 합치는 옵션이 달라서, 이 도구의 규칙을 먼저 알고 결과를 보는 것이 좋습니다. 설정 파일은 보통 사람이 눈으로 확인한 뒤 배포하므로, 병합 전후를 나란히 놓고 바뀐 키만 찾는 습관을 들이면 실수가 줄어듭니다.

자주 묻는 질문

배열에 항목만 추가하는 방식으로 병합할 수 있나요?

아닙니다. 오른쪽 배열은 왼쪽 배열을 완전히 대체합니다. 항목을 더하고 싶다면 오른쪽 배열에 기존 항목과 새 항목을 모두 적어야 합니다.

왼쪽에 있는 키를 삭제하고 싶으면 어떻게 하나요?

이 도구는 삭제 표시를 지원하지 않습니다. 오른쪽에 null을 넣으면 값이 null로 남으므로, 키 자체를 없애려면 결과를 받은 뒤 해당 키를 직접 제거해야 합니다.

두 입력의 위치를 바꾸면 결과도 달라지나요?

네, 같은 키의 값이 충돌하면 오른쪽 값이 항상 이기므로 결과가 달라집니다. 키 순서도 왼쪽 입력을 따르므로, 저장 파일의 diff를 비교할 때 순서가 바뀌었는지도 함께 보세요.