0Pricing
Python Academy · Pelajaran

Menangani Struktur JSON Bersarang

Telusuri dan ubah objek JSON bersarang yang kompleks.

Menangani Struktur JSON Bersarang adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pendahuluan

JSON di dunia nyata memiliki struktur yang bertingkat dalam. Kemampuan menavigasi, mengubah, dan memvalidasi struktur bertingkat sangatlah penting.

Mengakses Kunci Bertingkat

data['user']['address']['city'] menavigasi dict bertingkat. Gunakan .get() di setiap tingkat untuk menangani kunci yang tidak ada.
import json
data = {'user': {'address': {'city': 'NYC', 'zip': '10001'}}}
print(data['user']['address']['city'])

Akses Bertingkat yang Aman

data.get('user', {}).get('address', {}).get('city') merangkai pemanggilan .get() dengan aman.
data = {'user': {'name': 'Alice'}}
city = data.get('user', {}).get('address', {}).get('city', 'unknown')
print(city)

Melakukan Iterasi pada Array Objek

Array JSON yang berisi objek merupakan daftar dict. Lakukan iterasi dengan perulangan for.
import json
data = json.loads('[{"name":"Alice"},{"name":"Bob"}]')
for user in data:
    print(user['name'])

Meratakan JSON Bertingkat

Tulis fungsi rekursif untuk meratakan dict bertingkat menjadi dict datar dengan kunci bertitik.
def flatten(d, prefix=''):
    result = {}
    for k, v in d.items():
        key = f'{prefix}.{k}' if prefix else k
        if isinstance(v, dict):
            result.update(flatten(v, key))
        else:
            result[key] = v
    return result
print(flatten({'a': {'b': {'c': 1}}, 'd': 2}))

Memfilter Array

[user for user in data if user.get('active')] memfilter array JSON berdasarkan suatu kondisi.
data = [{'name':'A','active':True},{'name':'B','active':False}]
active = [u for u in data if u.get('active')]
print(active)

Mengubah Data Bertingkat

Ekstrak sebuah bidang dari setiap objek bertingkat: [item['name'] for item in data]
data = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
names = [d['name'] for d in data]
print(names)

Validasi Skema dengan jsonschema

pip install jsonschema. jsonschema.validate(instance, schema) memunculkan ValidationError pada data yang tidak valid.
# from jsonschema import validate
# schema = {'type':'object','required':['name']}
# validate({'name':'Alice'}, schema)  # OK
# validate({}, schema)  # raises ValidationError
print('schema validation demo')

Memperbarui Dict Bertingkat Secara Mendalam

dict.update() dangkal tidak menggabungkan dict bertingkat. Tulis deep_update rekursif untuk penggabungan bertingkat.
def deep_update(base, override):
    for k, v in override.items():
        if isinstance(v, dict) and isinstance(base.get(k), dict):
            deep_update(base[k], v)
        else:
            base[k] = v
    return base
result = deep_update({'a': {'x': 1}}, {'a': {'y': 2}})
print(result)

Kueri bergaya jq dengan Python

Untuk kueri kompleks, gunakan pustaka jq atau pencarian rekursif khusus: find_all(data, 'key').
def find_all(obj, key):
    if isinstance(obj, dict):
        if key in obj: yield obj[key]
        for v in obj.values(): yield from find_all(v, key)
    elif isinstance(obj, list):
        for item in obj: yield from find_all(item, key)
data = {'a': {'name': 'x'}, 'b': [{'name': 'y'}]}
print(list(find_all(data, 'name')))

Melakukan Serialisasi ke NDJSON

JSON berbatas baris baru (NDJSON): satu objek JSON per baris. Tulis dengan json.dumps(obj) + '\n'.
import json
objects = [{'id': 1}, {'id': 2}, {'id': 3}]
ndjson = '\n'.join(json.dumps(o) for o in objects)
print(ndjson)

Pemeriksaan Cepat

Apa yang dikembalikan oleh data.get('key', {}).get('nested') ketika 'key' tidak ada?

Ringkasan

JSON bertingkat: rangkai .get() untuk akses yang aman. Lakukan iterasi pada array dengan for. Ratakan dengan rekursi. Saring dengan pemahaman list. Gunakan jsonschema untuk validasi.

Lanjutkan

Pertahankan usaha Anda! Lanjutkan ke pelajaran berikutnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menangani Struktur JSON Bersarang” gratis?

Ya — teks lengkap “Menangani Struktur JSON Bersarang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menangani Struktur JSON Bersarang”?

Telusuri dan ubah objek JSON bersarang yang kompleks. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menangani Struktur JSON Bersarang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Encoding dan Decoding JSON
  2. Menangani Struktur JSON Bersarang
  3. Membaca CSV dengan csv.reader
  4. Menulis CSV dengan csv.DictWriter
← Kembali ke Python Academy