الدرس 8 من 10
قراءة JSON وكتابتها
- 11 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
من نصّ إلى بيانات وبالعكس
الشرح
صيغة JSON تتبادل بها البرامج البيانات، وتجدها في ردود الواجهات البرمجية (API) وملفات الإعدادات وفيما يمرّ بين الخادم والمتصفح. وما يصلك منها هو في النهاية نصّ وليس قاموسًا، فلا تقرأ منه مفتاحًا قبل أن تحوّله.
الدالة json.loads(text) تحوّل النصّ إلى قواميس وقوائم في Python، وjson.dumps(data) تعيدها نصًّا، والمُعامِل indent=2 يوزّع هذا النصّ على أسطر بإزاحة واضحة ليسهل قراؤه. وما دامت بياناتك قواميس وقوائم ونصوصًا وأرقامًا فلن يضيع منها شيء إذا حوّلتها إلى نصّ ثم أعدتها.
والفخّ مع العربية أن dumps تحوّل افتراضيًّا كل حرف غير لاتيني إلى رمز، فتصير «ليان» "\u0644\u064a\u0627\u0646"، وهذا صحيح من الناحية التقنية، لكن الإنسان لا يستطيع قراءته، ويكبر به حجم النصّ. أما ensure_ascii=False فتُبقي الحروف كما هي.
المطلوب
حوّل raw إلى order بـ json.loads، وأضف إليه المفتاح "total" وقيمته مجموع price * qty لكل عنصر في items، ثم اصنع pretty بـ json.dumps بحيث تبقى العربية مقروءة وتكون الإزاحة 2.
الفحوص
5 فحوص- المتغيّر order قاموس وليس نصًّا
- المتغيّر total هو مجموع السعر مضروبًا في الكمية
- النصّ pretty يعود بـ loads إلى order نفسه
- العربية في pretty مقروءة
- الإزاحة في pretty مسافتان