دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
وحدات التسلسل
وحدة JSON
الهدف
اذهب إلى محطة الخدمة وتأكد من تخزين البيانات بشكل صحيح باستخدام وحدة JSON لتنسيق الملفات.
هناك محطة خدمة جنوب المبنى الملحق في منطقة البناء الجديدة، سيتم تطوير هذه المنطقة بالكامل لزراعة المحاصيل. تحتوي المحطة على مجموعة من المحطات الطرفية التي تعالج البيانات للتطوير الجديد، يمكننا العمل على كتابة البيانات يدويًا، لكن ذلك سيستغرق وقتًا طويلاً. من أجل عملية معالجة البيانات، يمكننا استخدام JSON وهو اختصار لـ JavaScript Object Notation، وهو تنسيق بيانات مستقل عن لغات البرمجة ويخزن المعلومات بطريقة سهلة القراءة لتخزين البيانات ونقلها.
لاستخدام JSON مع بايثون يمكننا استخدام import json الذي سيتيح لنا الوصول إلى وظائف JSON، ولأغراضنا سنستخدم الوظائف التالية:
json.loads(): يحول سلسلة JSON إلى بيانات بايثون، يأخذ معاملًا واحدًا، وهو السلسلة التي تريد تحليلها إلى بايثون.json.dumps(): يحول بيانات بايثون إلى كائن سلسلة JSON، يمكن أن يأخذ هذا الدالة ما يصل إلى أربعة (4) معطيات، المتطلب الوحيد هو الأول لاستخدام الدالة. وهي كالتالي.- بيانات بايثون التي تريد تحويلها إلى JSON: يمكن أن تكون من أنواع البيانات التالية: القواميس (dictionaries)، القوائم (lists)، tuples، السلاسل (string)، الأعداد الصحيحة (integer)، العرضية (float)، القيم المنطقية (boolean)، وNone.
indent: عدد المسافات التي تريد إضافتها في بداية نقطة البيانات.separators: هذه هي العناصر التي تريد ظهورها بين أو في نهاية نقاط البيانات.sort_keys: يرتب مفاتيح القاموس أبجديًا إذا كنت تقوم بتحويل قاموس.
لبدء التنفيذ، توجه إلى علامة X الذهبية في المعسكر إلى اليسار وواجه المكتب الذي عليه المذكرة. استخدم الدالة read() للتحقق من المعلومات المطلوبة لتأكيد حالة المحطة وقم بتدوينها. امشِ إلى علامة X الفاتحة أمام المحطة الطرفية، هناك ثابت باسم transmission، استخدم json.dumps() لتنسيقه كـ json حتى نتمكن من تحويله، هكذا: transmission = json.dumps(transmission).
أنشئ قاموسًا باسم load وخزن قيمة json.loads() مع الثابت transmission كمعامل. سيؤدي ذلك إلى تحويل JSON إلى بايثون بحيث يمكن الوصول إلى معلوماته بسهولة. استخدم الدالة speak() مع المفاتيح الموضحة في المذكرة وباستخدام قاموس load الذي أنشأته. على سبيل المثال: player.speak(load["system"])، افعل ذلك لكل المفاتيح.
بعد التحقق من المعلومات على المحطة الطرفية، امشِ نحو المحطة، ادخل وتوجه إلى علامة X الفاتحة فوق السجادة الخضراء. تحقق من المذكرة باستخدام الدالة read()، تحقق وقم بتدوين القيم، في المحرر هناك قاموس مسبق الكتابة باسم profile، املأ القيم المفقودة بالمعلومات الواردة في المذكرة.
امشِ إلى علامة X الداكنة فوق السجادة الخضراء، واجه المحطة الطرفية وأنشئ متغيرًا باسم transfer وخزن فيه قيمة json.dumps() وأضف قاموس profile كمعامل وحيد. وبهذا نحول القاموس إلى كائن سلسلة JSON. استخدم الدالة المسبقة الكتابة display() وأضف JSON transfer لتخزين البيانات في المحطة.
امشِ إلى علامة X الداكنة فوق السجادة الحمراء واستخدم الدالة read() للتحقق من البيانات المدخلة بالفعل في المحطة الطرفية. البيانات ليست معروضة بالتنسيق الصحيح، ولكي يتم تخزين المعلومات بشكل صحيح يجب تخزينها وتنسيقها كـ JSON. يتم تخزين البيانات في ثابت قاموس يسمى red_data، أنشئ متغيرًا باسم red_storage وخزن فيه قيمة الدالة json.dumps().
لتنسيق البيانات، أضف المعطيات التالية إلى الدالة: أضف red_data لتحويل الثابت إلى JSON، أضف indent واجعله 5 لتنسيق النص، أضف separators وأضف ("- ", " = ") لإضافة هذه الرموز في نهاية كل سطر. يجب أن تبدو السطر هكذا: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). استخدم الدالة المسبقة الكتابة display() وأضف سلسلة JSON red_storage لتخزين وعرض البيانات المنسقة.
امشِ إلى علامة X الداكنة فوق السجادة الزرقاء وواجه المحطة الطرفية واستخدم الدالة read()، مثل السابق البيانات غير مخزنة بشكل صحيح وتحتاج إلى تنسيق وأيضًا إلى ترتيب. يتم تخزين البيانات في ثابت يسمى blue_data، أنشئ متغيرًا باسم blue_storage وخزن فيه قيمة الدالة json.dumps().
بالنسبة للمعطيات: أضف blue_data لتحويل الثابت إلى JSON، أضف indent واجعله 4 لتنسيق النص، أضف separators وأضف (".0", " = ") لإضافة هذه الرموز في نهاية كل سطر. بالإضافة إلى ذلك أضف المعامل sort_keys كالمعامل الأخير واجعله True، هكذا: sort_keys=True. استخدم الدالة المسبقة الكتابة display() وأضف سلسلة JSON blue_storage لتخزين وعرض البيانات المرتبة وإكمال المستوى.