الدرس 8 من 10

JSON ذهابًا وإيابًا

هدف الدرس

من نصّ إلى بيانات وبالعكس

01

الشرح

JSON لغة تبادل البيانات بين البرامج: ردود الواجهات البرمجية، وملفات الإعداد، وما يمرّ بين الخادم والمتصفح. وهو في النهاية نصّ لا قاموس، فلا تقرأ منه مفتاحًا قبل أن تحوّله.

json.loads(text) تحوّل النصّ إلى قواميس وقوائم بايثون، وjson.dumps(data) تعيدها نصًّا، وindent=2 يوزّعه على أسطر بمسافة بادئة فيُقرأ. وما دامت البيانات قواميس وقوائم ونصوصًا وأرقامًا فالرحلة ذهابًا وإيابًا لا تُضيّع شيئًا.

والفخّ مع العربية: dumps تهرّب افتراضيًّا كل حرف غير لاتيني، فتصير «ليان» "\u0644\u064a\u0627\u0646". صحيحة تقنيًّا، لكن لا يقرؤها إنسان وتضخّم الحجم. وensure_ascii=False تُبقي الحروف كما هي.

02

المطلوب

حوّل raw إلى order بـ json.loads، وأضف إليه "total": مجموع price * qty لكل عنصر في items. ثم اصنع pretty بـ json.dumps: عربية مقروءة، ومسافة بادئة 2.

معايير التصحيح

5 معايير
  1. order قاموس لا نصّ
  2. total مجموع السعر في الكمية
  3. pretty يرجع بـ loads إلى order نفسه
  4. العربية في pretty مقروءة
  5. مسافته البادئة 2
main.py
المخرجاتPython · Pyodide

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».