본문으로 건너뛰기
🛠️ToolsShed

JSON Flattener

중첩된 JSON을 점 표기법으로 평면 키-값 쌍으로 평탄화합니다.

이 도구 소개

JSON 플래튼(Flatten)은 중첩된 JSON 구조를 점(dot) 표기법 키를 사용하여 단일 레벨의 표현으로 변환하는 과정입니다. API, 데이터베이스, 설정 파일에서 복잡한 중첩 객체를 다룰 때, 이 도구는 이들을 분석하거나 저장하거나 CSV, 스프레드시트 같은 형식으로 내보내기가 쉬운 단순한 키-값 쌍으로 변환합니다.

JSON Flattener를 사용하려면 중첩된 JSON을 입력 영역에 붙여넣고 플래튼 버튼을 클릭하면 됩니다. 도구는 다중 레벨의 객체와 배열을 즉시 변환하여 부모-자식 관계가 점으로 표현된 평탄화된 키를 생성합니다(예: "user.profile.email"). 그 후 결과를 직접 복사하거나 데이터 파이프라인, 보고 도구, 스프레드시트 응용 프로그램에서 사용하기 위해 내보낼 수 있습니다.

이 도구는 비정형 API 응답을 변환하는 데이터 엔지니어, 복잡한 객체 구조를 디버깅하는 개발자, 평탄화된 스키마를 기대하는 BI 플랫폼을 위해 데이터를 준비하는 분석가들에게 매우 유용합니다. JSON Flattener는 배열 인덱스와 커스텀 구분자를 지원하여 다양한 데이터 변환 워크플로우에 유연하게 대응합니다.

자주 묻는 질문

코드 구현

def flatten(obj, prefix="", sep="."):
    """Flatten a nested dict into dot-notation keys."""
    result = {}
    if isinstance(obj, dict):
        for key, value in obj.items():
            new_key = f"{prefix}{sep}{key}" if prefix else key
            if isinstance(value, (dict, list)):
                result.update(flatten(value, new_key, sep))
            else:
                result[new_key] = value
    elif isinstance(obj, list):
        for i, value in enumerate(obj):
            new_key = f"{prefix}{sep}{i}" if prefix else str(i)
            if isinstance(value, (dict, list)):
                result.update(flatten(value, new_key, sep))
            else:
                result[new_key] = value
    else:
        result[prefix] = obj
    return result

def unflatten(flat, sep="."):
    """Reconstruct nested dict from dot-notation keys."""
    result = {}
    for key, value in flat.items():
        parts = key.split(sep)
        d = result
        for part in parts[:-1]:
            d = d.setdefault(part, {})
        d[parts[-1]] = value
    return result

# Example
nested = {"user": {"name": "Alice", "address": {"city": "Seoul"}}}
flat = flatten(nested)
print(flat)  # {'user.name': 'Alice', 'user.address.city': 'Seoul'}
print(unflatten(flat))  # back to nested

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.