Lewati ke konten
🛠️ToolsShed

JSON Flattener

Ratakan JSON bersarang menjadi pasangan kunci-nilai datar dengan notasi titik.

Tentang alat ini

Perataan JSON adalah proses mengonversi struktur JSON yang bersarang menjadi representasi tingkat tunggal menggunakan kunci notasi titik. Ketika Anda bekerja dengan objek bersarang kompleks dari API, basis data, atau file konfigurasi, alat ini mengubahnya menjadi pasangan kunci-nilai sederhana yang lebih mudah untuk dianalisis, disimpan, atau diekspor ke format seperti CSV atau spreadsheet.

Untuk menggunakan JSON Flattener, cukup tempel JSON bersarang ke area input dan klik tombol ratakan. Alat ini dengan segera mengonversi objek multi-level dan array menjadi kunci yang diratakan di mana hubungan parent-child direpresentasikan dengan titik—misalnya, "user.profile.email" daripada tanda kurung bersarang. Anda kemudian dapat menyalin hasilnya secara langsung atau mengekspornya untuk digunakan dalam saluran data, alat pelaporan, atau aplikasi spreadsheet.

Alat ini sangat berharga bagi insinyur data yang mengubah respons API yang tidak terstruktur, pengembang yang men-debug struktur objek kompleks, dan analis yang mempersiapkan data untuk platform BI yang mengharapkan skema yang diratakan. JSON Flattener menghormati indeks array dan pemisah kustom, menjadikannya fleksibel untuk berbagai alur kerja transformasi data.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.