0Pricing
Python Academy · บทเรียน

การจัดการโครงสร้าง JSON ซ้อนกัน

นำทางและแปลงออบเจ็กต์ JSON ที่ซ้อนกันอย่างซับซ้อน

การจัดการโครงสร้าง JSON ซ้อนกัน เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

JSON ในโลกจริงมีโครงสร้างซ้อนกันหลายชั้น การรู้วิธีนำทาง แปลง และตรวจสอบโครงสร้างที่ซ้อนกันจึงเป็นสิ่งสำคัญ

การเข้าถึงคีย์ที่ซ้อนกัน

data['user']['address']['city'] ใช้นำทางผ่านพจนานุกรมที่ซ้อนกัน ใช้ .get() ในแต่ละระดับเพื่อจัดการกับคีย์ที่หายไป
import json
data = {'user': {'address': {'city': 'NYC', 'zip': '10001'}}}
print(data['user']['address']['city'])

การเข้าถึงข้อมูลซ้อนกันอย่างปลอดภัย

data.get('user', {}).get('address', {}).get('city') เชื่อมการเรียกใช้ .get() อย่างปลอดภัย
data = {'user': {'name': 'Alice'}}
city = data.get('user', {}).get('address', {}).get('city', 'unknown')
print(city)

การวนซ้ำอาร์เรย์ของอ็อบเจ็กต์

อาร์เรย์ JSON ของอ็อบเจ็กต์คือรายการของพจนานุกรม ให้วนซ้ำด้วยลูป for
import json
data = json.loads('[{"name":"Alice"},{"name":"Bob"}]')
for user in data:
    print(user['name'])

การทำ JSON ที่ซ้อนกันให้แบนราบ

เขียนฟังก์ชันแบบเรียกซ้ำเพื่อเปลี่ยนพจนานุกรมที่ซ้อนกันให้เป็นพจนานุกรมแบบแบน โดยใช้คีย์ที่มีจุดคั่น
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}))

การกรองอาร์เรย์

[user for user in data if user.get('active')] ใช้กรองอาร์เรย์ JSON ตามเงื่อนไข
data = [{'name':'A','active':True},{'name':'B','active':False}]
active = [u for u in data if u.get('active')]
print(active)

การแปลงข้อมูลที่ซ้อนกัน

แยกฟิลด์หนึ่งจากอ็อบเจ็กต์ที่ซ้อนกันแต่ละรายการ: [item['name'] for item in data]
data = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
names = [d['name'] for d in data]
print(names)

การตรวจสอบสคีมาด้วย jsonschema

pip install jsonschema โดย jsonschema.validate(instance, schema) จะทำให้เกิด ValidationError เมื่อข้อมูลไม่ถูกต้อง
# from jsonschema import validate
# schema = {'type':'object','required':['name']}
# validate({'name':'Alice'}, schema)  # OK
# validate({}, schema)  # raises ValidationError
print('schema validation demo')

การอัปเดตพจนานุกรมที่ซ้อนกันหลายชั้น

dict.update() แบบตื้นไม่ผสานพจนานุกรมที่ซ้อนกัน ให้เขียน deep_update แบบเรียกซ้ำเพื่อผสานข้อมูลที่ซ้อนกัน
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)

การสืบค้นแบบ jq ด้วย Python

สำหรับการสืบค้นที่ซับซ้อน ให้ใช้ไลบรารี jq หรือการค้นหาแบบเวียนเกิดที่กำหนดเอง: 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')))

การทำให้เป็นอนุกรมเป็น NDJSON

JSON แบบแบ่งด้วยบรรทัดใหม่ (NDJSON): ออบเจกต์ JSON หนึ่งรายการต่อหนึ่งบรรทัด ให้เขียนด้วย 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)

ตรวจสอบอย่างรวดเร็ว

data.get('key', {}).get('nested') จะคืนค่าอะไรเมื่อไม่มี 'key'

สรุปทบทวน

JSON แบบซ้อนกัน: เชื่อม .get() เพื่อเข้าถึงข้อมูลอย่างปลอดภัย วนซ้ำอาร์เรย์ด้วย for แปลงโครงสร้างให้แบนด้วยการเรียกซ้ำ กรองด้วยการสร้างรายการแบบย่อ ใช้ jsonschema เพื่อตรวจสอบความถูกต้อง

เดินหน้าต่อ

ทำได้ดีครับ โปรดไปยังบทเรียนถัดไป

คำถามที่พบบ่อย

บทเรียน “การจัดการโครงสร้าง JSON ซ้อนกัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการโครงสร้าง JSON ซ้อนกัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการโครงสร้าง JSON ซ้อนกัน”

นำทางและแปลงออบเจ็กต์ JSON ที่ซ้อนกันอย่างซับซ้อน คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดการโครงสร้าง JSON ซ้อนกัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเข้ารหัสและถอดรหัส JSON
  2. การจัดการโครงสร้าง JSON ซ้อนกัน
  3. การอ่าน CSV ด้วย csv.reader
  4. การเขียน CSV ด้วย csv.DictWriter
← กลับไปที่ Python Academy