Python Academy · Pelajaran

Mengendalikan Struktur JSON Bersarang

Navigasi dan ubah objek JSON bersarang yang kompleks.

Pelajaran 2 daripada 414 langkah

Mengendalikan Struktur JSON Bersarang ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Pengenalan

JSON dunia sebenar bersarang secara mendalam. Mengetahui cara menavigasi, mentransformasikan dan mengesahkan struktur bersarang adalah penting.

Mengakses Kunci Bersarang

data['user']['address']['city'] menavigasi dict bersarang. Gunakan .get() pada setiap aras untuk mengendalikan kunci yang tiada.
import json
data = {'user': {'address': {'city': 'NYC', 'zip': '10001'}}}
print(data['user']['address']['city'])

Capaian Bersarang Selamat

data.get('user', {}).get('address', {}).get('city') merangkaikan panggilan .get() dengan selamat.
data = {'user': {'name': 'Alice'}}
city = data.get('user', {}).get('address', {}).get('city', 'unknown')
print(city)

Mengiterasi Tatasusunan Objek

Tatasusunan JSON yang mengandungi objek ialah senarai dict. Lakukan iterasi dengan gelung for.
import json
data = json.loads('[{"name":"Alice"},{"name":"Bob"}]')
for user in data:
    print(user['name'])

Meratakan JSON Bersarang

Tulis fungsi rekursif untuk meratakan dict bersarang menjadi dict rata 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}))

Menapis Tatasusunan

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

Mentransformasikan Data Bersarang

Ekstrak satu medan daripada setiap objek bersarang: [item['name'] for item in data]
data = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
names = [d['name'] for d in data]
print(names)

Pengesahan Skema dengan jsonschema

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

Mengemas Kini Dict Bersarang Secara Mendalam

dict.update() cetek tidak menggabungkan dict bersarang. Tulis deep_update secara rekursif untuk penggabungan bersarang.
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)

Pertanyaan Gaya jq dengan Python

Untuk pertanyaan kompleks, gunakan pustaka jq atau carian rekursif tersuai: 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')))

Pensirian kepada NDJSON

JSON yang dipisahkan oleh baris baharu (NDJSON): satu objek JSON bagi setiap 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)

Semakan Pantas

Apakah yang dikembalikan oleh data.get('key', {}).get('nested') apabila 'key' tiada?

Imbas Kembali

JSON berarang: rangkaikan .get() untuk akses selamat. Ulang melalui tatasusunan dengan for. Ratakan dengan rekursi. Tapis dengan pemahaman senarai. Gunakan jsonschema untuk pengesahan.

Teruskan

Sila teruskan usaha! Beralih ke pelajaran seterusnya.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Mengendalikan Struktur JSON Bersarang” percuma?

Ya — teks penuh “Mengendalikan Struktur JSON Bersarang” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengendalikan Struktur JSON Bersarang”?

Navigasi dan ubah objek JSON bersarang yang kompleks. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mengendalikan Struktur JSON Bersarang” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengekodan dan Penyahkodan JSON
  2. Mengendalikan Struktur JSON Bersarang
  3. Membaca CSV dengan csv.reader
  4. Menulis CSV dengan csv.DictWriter
← Kembali ke Python Academy