이 도구에 대하여
JSON Flatten / Unflatten은 중첩된 JSON을 점 표기법 키의 단일 레벨 맵으로 변환하고, 그 평탄한 키로부터 중첩 구조를 다시 세우는 무료 브라우저 내 도구입니다. JSON을 붙여 넣고 방향을 고르세요. Flatten은 모든 경로를 하나의 평탄한 객체로 접고(예: user.name 또는 user.roles.0), Unflatten은 점이 찍힌 키를 다시 중첩된 객체와 배열로 펼칩니다.
두 방향 모두 입력을 브라우저 자체의 JSON 파서로 파싱하고 결과를 두 칸 들여쓰기로 보기 좋게 출력합니다. 객체와 배열은 재귀적으로 순회되고, 배열 항목은 경로에 숫자 인덱스를 유지하며, 리프 값(문자열, 숫자, 불리언, null, 빈 객체나 배열)은 변경 없이 보존됩니다. 잘못된 JSON은 출력 대신 인라인 오류를 표시하며, 복사 버튼으로 결과를 클립보드에 담을 수 있습니다.
모든 처리는 JavaScript로 로컬에서 이뤄집니다. 업로드도, 계정도, 추적도 없으며 오프라인에서 작동합니다. Flatten은 설정을 환경 변수나 i18n 메시지 파일 같은 평탄한 키/값 쌍으로 바꾸거나, 깊이 중첩된 페이로드를 diff하거나, API 응답을 재구성할 때 유용하며, Unflatten은 같은 매핑을 되돌립니다.
자주 묻는 질문
배열은 어떻게 처리되나요?
배열 요소는 items.0.name처럼 키에 숫자 인덱스를 사용합니다. Unflatten할 때 모두 숫자로 된 경로 구간은 배열 인덱스로 취급되므로 그 부분은 배열로 다시 세워집니다.
제 데이터가 업로드되나요?
아니요. 파싱과 변환은 전적으로 브라우저의 JavaScript에서 이뤄지며 서버로 전송되는 것이 없고, 오프라인에서도 계속 작동합니다.
빈 객체와 배열은 어떻게 되나요?
리프 값으로 취급되어 해당 키에 그대로 유지됩니다. 그래서 빈 {}나 []는 더 깊은 키로 펼쳐지지 않고 Flatten 후에도 변경 없이 남습니다.
Flatten 후 Unflatten하면 항상 원래 JSON으로 돌아오나요?
거의 항상 그렇지만 두 경우는 다릅니다. 이미 점을 포함한 키는 Unflatten 시 추가 중첩으로 쪼개지고, 숫자로만 이뤄진 객체 키는 객체 키가 아니라 배열 인덱스로 다시 세워집니다.