تعلم لغة البايثون – الدرس التاسع عشر السريلة في بايثون Python Serialization

توفر Python مكتبات JSON مدمجة لترميز JSON وفك ترميزها.

في Python 2.5 ، يتم استخدام وحدة simplejson ، بينما في Python 2.7 ، يتم استخدام وحدة json. نظرًا لأن هذا المترجم يستخدم Python 2.7 ، فسنستخدم json.

لاستخدام وحدة json ، يجب استيرادها أولاً:

import json

هناك تنسيقان أساسيان لبيانات JSON. إما في سلسلة أو بنية بيانات الكائن. تتكون بنية بيانات الكائن ، في Python ، من قوائم وقواميس متداخلة داخل بعضها البعض. تسمح بنية بيانات الكائن للمرء باستخدام طرق python (للقوائم والقواميس) لإضافة عناصر وإدراجها والبحث فيها وإزالتها من بنية البيانات. يتم استخدام تنسيق السلسلة بشكل أساسي لتمرير البيانات إلى برنامج آخر أو تحميلها في هيكل البيانات.

لتحميل JSON مرة أخرى إلى بنية بيانات ، استخدم طريقة “loads”. تأخذ هذه الطريقة سلسلة وتحولها مرة أخرى إلى بنية بيانات كائن json:

import json 
print(json.loads(json_string))

لترميز بنية بيانات إلى JSON ، استخدم طريقة “dumps”. تأخذ هذه الطريقة كائنًا وترجع سلسلة:

import json
json_string = json.dumps([1, 2, 3, "a", "b", "c"])
print(json_string)

يدعم Python طريقة تسلسل البيانات الخاصة بـ Python والتي تسمى pickle (وبديل أسرع يسمى cPickle).

يمكنك استخدامه بنفس الطريقة بالضبط.

import pickle
pickled_string = pickle.dumps([1, 2, 3, "a", "b", "c"])
print(pickle.loads(pickled_string))

سنحصل على النتيجة التالية عند التشغيل

[1, 2, 3, 'a', 'b', 'c']

تمرين

الهدف من هذا التمرين هو طباعة سلسلة JSON مع زوج القيمة الرئيسية “Me”: 800 المضافة إليه.

import json

# إصلاح هذه الوظيفة ، لذا فهي تضيف الاسم المحدد
# وزوج المرتبات إلى salaries_json وإعادتهما
def add_employee(salaries_json, name, salary):
# أضف رمزك هنا

    return salaries_json

# رمز الاختبار
salaries = '{"Ahmed" : 300, "Amel" : 400 }'
new_salaries = add_employee(salaries, "Me", 800)
decoded_salaries = json.loads(new_salaries)
print(decoded_salaries["Ahmed"])
print(decoded_salaries["Amel"])
print(decoded_salaries["Me"])

الحل

import json

# إصلاح هذه الوظيفة ، لذا فهي تضيف الاسم المحدد
# وزوج المرتبات إلى salaries_json وإعادتهما
def add_employee(salaries_json, name, salary):
    salaries = json.loads(salaries_json)
    salaries[name] = salary

    return json.dumps(salaries)

# رمز الاختبار
salaries = '{"Ahmed" : 300, "Amel" : 400 }'
new_salaries = add_employee(salaries, "Me", 800)
decoded_salaries = json.loads(new_salaries)
print(decoded_salaries["Ahmed"])
print(decoded_salaries["Amel"])
print(decoded_salaries["Me"])

سنحصل على النتيجة التالية عند التشغيل

<script.py> output:
    300
    400
    800





Leave a Reply