Cara Parsing Nested JSON di Python: Panduan Praktis & Efisien

Metode Parsing Nested JSON

Untuk memproses data JSON bertingkat (nested) di Python, Anda dapat menggunakan pustaka standar json. Jika struktur data bersifat statis, akses langsung melalui kunci (key) adalah cara tercepat. Namun, untuk struktur yang dinamis atau dalam, teknik rekursi adalah solusi paling efektif.

1. Akses Langsung (Static Path)

Jika Anda mengetahui struktur data secara pasti, gunakan akses indeks kamus (dictionary) standar Python.

import json

data_str = '{"user": {"id": 1, "profile": {"name": "Azwinn"}}}'
data = json.loads(data_str)

# Akses nested data
name = data['user']['profile']['name']
print(name) # Output: Azwinn

2. Teknik Rekursi untuk Data Dinamis

Jika struktur JSON sangat dalam dan tidak menentu, gunakan fungsi rekursif untuk menelusuri setiap node hingga menemukan kunci yang dicari.

def find_key(data, target_key):
    if isinstance(data, dict):
        for key, value in data.items():
            if key == target_key:
                return value
            result = find_key(value, target_key)
            if result is not None:
                return result
    elif isinstance(data, list):
        for item in data:
            result = find_key(item, target_key)
            if result is not None:
                return result
    return None

# Penggunaan
print(find_key(data, 'name'))
MetodeKelebihanKekurangan
Akses LangsungSangat cepat, kode ringkasRentan error jika kunci tidak ada
RekursiFleksibel untuk struktur dalamLebih lambat pada data masif
Library PandasAnalisis data tabular mudahOverhead memori tinggi

Tips Troubleshooting

  • KeyError: Selalu gunakan metode .get() untuk menghindari error saat kunci tidak ditemukan (contoh: data.get('user', {}).get('name')).
  • Validasi: Gunakan try-except saat melakukan json.loads() untuk menangani string JSON yang korup atau tidak valid.
  • Library Pihak Ketiga: Untuk data yang sangat kompleks, pertimbangkan menggunakan glom atau jmespath yang dirancang khusus untuk query data JSON yang dalam.