0Pricing
Python Academy · درس

التعامل مع هياكل JSON المتداخلة

تنقّل في كائنات JSON المتداخلة والمعقدة وحوّلها

التعامل مع هياكل JSON المتداخلة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 المتداخلة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «التعامل مع هياكل JSON المتداخلة»؟

تنقّل في كائنات JSON المتداخلة والمعقدة وحوّلها تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التعامل مع هياكل JSON المتداخلة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ترميز JSON وفك ترميزه
  2. التعامل مع هياكل JSON المتداخلة
  3. قراءة CSV باستخدام csv.reader
  4. كتابة CSV باستخدام csv.DictWriter
← العودة إلى Python Academy