MODOO HUB ← 모두의 툴
Dev · Instrument

JSON 평탄화

중첩 JSON → 단일 레벨 키-값 쌍으로 즉시 변환

JSON 평탄화란?

중첩된 JSON 객체를 단일 레벨의 키-값 쌍으로 변환합니다. 예: {"user":{"name":"Alice"}} → {"user.name":"Alice"}. 배열 속 객체는 재귀적으로 평탄화되지만(예: {"items":[{"id":1}]} → {"items.0.id":1}), 배열 속에 또 배열이 중첩된 경우(예: [[1,2],[3,4]])는 인덱스 키 하나에 원본 배열 값을 그대로 담아 더 이상 쪼개지 않습니다. 데이터베이스 저장, 환경변수 설정, 검색 인덱싱, 스프레드시트 내보내기 등 다양한 용도에 활용됩니다. 역변환(Unflatten)으로 다시 중첩 구조로 복원할 수 있습니다.

자주 묻는 질문

배열도 평탄화되나요?

네. 배열 속 원시값은 인덱스로(예: {"tags":["a","b"]} → {"tags.0":"a","tags.1":"b"}), 배열 속 객체는 재귀적으로 더 깊이 평탄화됩니다(예: {"items":[{"id":1}]} → {"items.0.id":1}). 다만 배열 속에 배열이 또 있는 경우(2차원 배열 등)는 해당 인덱스 키에 원본 배열을 그대로 값으로 저장하고 더 쪼개지 않습니다.

구분자를 변경할 수 있나요?

점(.) 대신 _(언더스코어), /(슬래시) 등 다른 구분자를 사용할 수 있습니다. 환경변수나 특정 시스템 형식에 맞게 조정하세요.

역변환(Unflatten)이란?

평탄화된 JSON을 다시 중첩 구조로 복원합니다. {"user.name":"Alice"} → {"user":{"name":"Alice"}}.

null 값은 어떻게 처리되나요?

null은 그대로 보존됩니다. {"a":{"b":null}} → {"a.b":null}.

평탄화 활용 사례는?

MongoDB dot notation 쿼리 작성, 환경변수 설정(A_B_C 형태), 스프레드시트 컬럼 변환, Redux 상태 관리, i18n 번역 키 생성 등에 유용합니다.

키에 구분자가 포함된 경우는?

키에 구분자(예: "user.name"이 키 자체인 경우) 포함되면 평탄화 시 모호성이 생길 수 있습니다. 구분자를 다른 문자로 변경하거나 역변환 시 주의가 필요합니다.

빈 객체·빈 배열은?

건너뛰지 않습니다. 빈 객체 {}와 빈 배열 []도 해당 키에 원본 그대로({} 또는 [])를 값으로 저장합니다. 예: {"a":{"b":{}},"c":[]} → {"a.b":{},"c":[]}. 이렇게 해야 역변환했을 때 빈 구조였다는 정보가 유실되지 않고 원본과 정확히 동일하게 복원됩니다.

대용량 JSON 처리 가능한가요?

브라우저 내에서 처리하므로 수 MB 이상의 대용량은 성능이 저하될 수 있습니다. 일반적인 설정 파일 크기는 문제 없습니다.