JSON 평탄화 및 복원
중첩된 JSON을 점·대괄호 경로 키로 평탄화하고 다시 복원하며, 중첩·평탄화 형태를 실시간 양방향으로 미리 봅니다.
키 목록
키 하나가 경로입니다: 점은 객체 안으로, [n]은 배열의 n번째로 들어갑니다. 원래 키 이름에 들어 있던 점이나 대괄호는 여기서 앞에 백슬래시가 붙습니다 — 경로 구분으로 읽히지 않게 하려는 것이며, 다시 중첩으로 되돌리면 원래대로 돌아옵니다.
결과 5줄, 40자브라우저에서 JSON 평탄화하고 복원하기
중첩된 JSON 객체를 붙여넣으면 경로 키와 값으로 이루어진 단일 레벨 맵으로 즉시 펼쳐집니다. 객체 속성은 점으로 이어지고 배열 항목은 대괄호 인덱스를 사용하므로 {"a":{"b":1},"c":[2,3]}는 {"a.b":1,"c[0]":2,"c[1]":3}가 됩니다. 배열 항목 표기를 연결 문자 뒤로 바꾸면 c[0]이 c.0이 되고, 이때 정수인 키는 앞에 백슬래시가 붙어 키로 돌아옵니다. 두 패널은 서로 동기화되어, 중첩된 JSON이나 평탄화된 JSON 중 어느 쪽을 편집해도 반대쪽이 실시간으로 다시 계산되며, 필요한 결과를 클릭 한 번으로 복사할 수 있습니다. 평탄화된 칸 아래의 키 형식에서 환경 변수형이나 열 이름형을 고르거나 키 앞에 붙일 말·키 뒤에 붙일 말을 넣으면 다른 파일에 쓸 키가 되는데, 이렇게 바꾼 키는 한 방향으로만 쓰이므로 키 형식을 경로로 두고 붙일 말을 비울 때까지 평탄화된 칸은 읽기 전용이 됩니다.
손실 없는 정확한 왕복 변환
평탄화와 복원은 서로 정확한 역연산입니다. 숫자, 불리언, 문자열, null은 그대로 보존되고 빈 객체와 빈 배열도 리프 값으로 유지되어 아무것도 조용히 사라지지 않습니다. 숫자 경로 세그먼트는 배열로, 이름 세그먼트는 객체로 복원되므로 평탄화한 어떤 구조든 원본 그대로 재구성됩니다. 덕분에 설정 파일 비교, 폼 필드 이름 생성, 스프레드시트나 환경 파일용 평탄한 키/값 데이터 준비에 유용합니다.
자주 묻는 질문
배열은 평탄화된 키에서 어떻게 표현되나요?
배열 항목은 c[0], c[1]처럼 키 뒤에 붙는 대괄호 인덱스로 표현됩니다. 중첩 배열은 인덱스를 쌓으므로 m[1][0]은 두 번째 안쪽 배열의 첫 번째 요소를 뜻합니다. 배열 항목 표기를 연결 문자 뒤로 두면 c.0, c.1처럼 씁니다. 복원할 때는 대괄호 인덱스가, 그 표기에서는 정수 세그먼트도 다시 실제 배열이 됩니다.
양쪽을 모두 편집하며 양방향으로 변환할 수 있나요?
네. 키 형식이 경로이고 키 앞뒤에 붙일 말이 비어 있으면 이 도구는 완전한 양방향입니다. 중첩된 JSON 칸에 입력하거나 붙여넣으면 평탄화되고, 평탄화된 JSON 칸을 편집하면 중첩 구조가 다시 만들어집니다. 한쪽이 올바른 JSON이 아니면 인라인 메시지가 표시되고 반대쪽은 입력이 파싱될 때까지 그대로 기다립니다. a와 a.b, tags[0]과 tags.x처럼 같은 자리에 값을 쓰는 두 키는 값 하나가 다른 값을 덮어쓰는 대신 키 이름과 함께 거부됩니다.
경로를 잇는 연결 문자를 고를 수 있나요?
네. 점, 밑줄, 밑줄 두 개, 슬래시 중에 고를 수 있고, 고른 연결 문자가 키 안에 들어 있으면 이스케이프해 되돌렸을 때 그대로 돌아옵니다.
.env 파일이나 스프레드시트 열 이름에 맞는 키를 만들고, 값마다 형식을 볼 수 있나요?
네. 키 형식에서 기본값인 경로 말고도 환경 변수형(USER_NAME)과 열 이름형(user_name)을 고를 수 있고, 배열 인덱스도 같은 규칙의 조각으로 바뀝니다. 키 앞에 붙일 말과 키 뒤에 붙일 말에는 환경 변수 묶음의 APP_ 같은 고정된 말을 넣습니다. 서로 다른 경로가 같은 키가 되면 값을 버리지 않고 그 키 이름을 들어 거부합니다. 이렇게 바꾼 키는 한 방향으로만 쓰이므로 그동안 평탄화된 칸은 읽기 전용이 됩니다. 접힌 “키 목록”은 고른 형식의 키마다 값의 형식을 문자열·숫자·불리언·null·빈 객체·빈 배열로 보여 줍니다.
JSON 파일 두 개에서 어떤 경로가 다른지 알 수 있나요?
이 페이지에서는 할 수 없지만, 여기서 연결된 이 사이트의 JSON 비교(Diff) 도구가 그 일을 합니다. 두 문서를 붙여넣으면 추가·삭제·변경된 값을 user.roles[0] 같은 전체 경로와 함께 모두 보여 주고, 먼저 평탄화할 필요도 없습니다. 이 페이지는 문서 하나를 평탄한 키로 바꾸고 다시 되돌리는 도구입니다.