يرمز JSON إلى JavaScript Object Notation. على الرغم من أن اسمه يشير إلى أنه مرتبط بلغة برمجة JavaScript، إلا أن تنسيق JSON مستقل عن اللغة ويستخدم بشكل متكرر في العديد من لغات البرمجة المختلفة.
ما هو ملف JSON؟
تُستخدم ملفات JSON بشكل شائع في نقل البيانات بين أجهزة الكمبيوتر. على سبيل المثال، عند تنزيل ملف من واجهة برمجة التطبيقات (API)، غالبًا ما تحتاج إلى التعامل مع ملفات JSON. إليك مقالة رائعة تشرح تنزيل ملف في بايثون من واجهة برمجة التطبيقات.
فيما يلي مثال لملف JSON:
{
"employee": [
{
"FirstName": "John",
"LastName": "Doe",
"Age": "29",
"Profession": "Engineer"
},
{
"FirstName": "Jane",
"LastName": "Doe",
"Age": "27",
"Profession": "Doctor"
}
]
}
تسمى الملفات التي تخزن البيانات بتنسيق JSON بملفات JSON. تعتمد هذه الملفات على النصوص، ويمكن قراءتها بواسطة الإنسان، وسهلة المعالجة – وكل ذلك يجعلها شائعة جدًا.
في هذه المقالة، سوف نتعلم كيفية تحويل سلسلة إلى JSON في بايثون وكيفية إنشاء ملفات JSON من كائنات بايثون.
العمل مع ملفات JSON في بايثون
تحتوي بايثون على مكتبة مدمجة تسمى json والتي توفر توابع بسيطة وفعالة للعمل مع ملفات JSON. دعنا نستعرض بعض الأمثلة التي توضح كيفية تحويل STRING إلى JSON في بايثون والعكس.
من JSON إلى كائن بايثون: إلغاء التسلسل
فيما يلي سلسلة JSON:
>>> example = '{"FirstName":"John", "LastName":"Doe","Age":29, "Profession":"Engineer"}'
يمكننا استخدام التابع loads()
لمكتبة json لتحويل هذه السلسلة إلى كائن بايثون:
>>> import json
>>> myobject = json.loads(example)
لقد قمنا للتو بتحويل البيانات المشفرة بـ JSON إلى كائن بايثون هذه العملية تسمى إلغاء التسلسل. كائن بايثون الناتج هو قاموس. يتكون قاموس بايثون من أزواج ذات قيمة أساسية ويمكننا الوصول بسهولة إلى عناصره باستخدام المفاتيح. على سبيل المثال، إذا أردنا الوصول إلى الاسم الأول في قاموس myobject، نكتب:
>>> myobject["FirstName"]
'John'
إذا كان لدينا ملف JSON ونريد تحويله إلى كائن بايثون، فيمكننا استخدام التابع load()
. قم بإلقاء نظرة سريعة على ملف JSON الخاص بالموظف في بداية المقال. تقرأ كتلة التعليمات البرمجية التالية هذا الملف وتحفظه في قاموس بايثون.
>>> with open("employee.json", "r") as read_file:
... employee = json.load(read_file)
...
>>> print(employee)
{'employee': [{'FirstName': 'John', 'LastName': 'Doe', 'Age': '29', 'Profession': 'Engineer'}, {'FirstName': 'Jane', 'LastName': 'Doe', 'Age': '27', 'Profession': 'Doctor'}]}
الآن employee
هو كائن قاموس بايثون.
من المهم التأكيد على الفرق بين توابع loads()
و load()
في مكتبة json. يتم استخدام التابع load لإنشاء كائن بايثون من ملف JSON، بينما تقوم loads()
بتحويل سلسلة JSON إلى كائن بايثون.
من كائن بايثون إلى سلسلة JSON: التسلسل
تمامًا كما يمكننا إنشاء كائن بايثون من ملف JSON، يمكننا تحويل كائن بايثون إلى سلسلة أو ملف JSON. هذه العملية تسمى التسلسل.
يتقوم التابع dumps()
بتحويل قاموس بايثون إلى سلسلة JSON. في قسم إلغاء التسلسل، قمنا بإنشاء قاموس يسمى myobject. يمكن تحويله مرة أخرى إلى سلسلة JSON كما يلي:
>>> json.dumps(myobject)
'{"FirstName": "John", "LastName": "Doe", "Age": 29, "Profession": "Engineer"}'
الإخراج عبارة عن سلسلة (لاحظ علامات الاقتباس المفردة حول الأقواس المتعرجة)، لذلك لا يمكننا الوصول إلى زوج محدد من المفاتيح والقيمة كما نفعل مع القواميس.
هذه السلسلة البسيطة جدًا ليس من الصعب قراءتها. ومع ذلك، يمكن أن تكون سلاسل JSON أطول بكثير وتحتوي على أجزاء متداخلة. في مثل هذه الحالات، يوفر التابع dumps()
طريقة طباعة أكثر قابلية للقراءة. يمكننا طباعة هذه السلسلة بشكل جميل عن طريق تعيين معلمة المسافة البادئة الاختيارية:
>>> print(json.dumps(myobject, indent=3))
{
"FirstName": "John",
"LastName": "Doe",
"Age": 29,
"Profession": "Engineer"
}
يحتوي التابع dumps()
أيضًا على معلمة للفرز حسب المفتاح:
>>> print(json.dumps(myobject, indent=3, sort_keys=True))
{
"Age": 29,
"FirstName": "John",
"LastName": "Doe",
"Profession": "Engineer"
}
إنشاء ملف JSON باستخدام dump()
يتقوم التابع dumps()
بتحويل كائن Python إلى سلسلة منسقة JSON. يمكننا أيضًا إنشاء ملف JSON من البيانات المخزنة في قاموس بايثون.
لنستخدم التابع dump()
لإنشاء ملف JSON. سنستخدم قاموس الموظف الذي أنشأناه في القسم السابق:
with open("new_employee.json", "w") as write_file:
json.dump(employee, write_file, indent=4)
يؤدي هذا إلى إنشاء ملف يسمى new_employee.json في دليل العمل الحالي الخاص بك ويفتحه في وضع الكتابة. ثم نستخدم dump ()
لإجراء تسلسل لقاموس Python.
تأخذ dump()
وسيطتين موضعيتين. الأول هو الكائن الذي يخزن البيانات المراد تسلسلها (قاموس بايثون). والثاني هو الملف لكتابة البيانات المتسلسلة. معلمة المسافة البادئة اختيارية.
الطباعة في سطر الأوامر
يسمح التابع tool()
لمكتبة json
بطباعة ملفات JSON بشكل جميل في سطر الأوامر. لنجرب ذلك على ملف new_employee.json الذي أنشأناه في القسم السابق.
الخطوة الأولى هي فتح واجهة سطر الأوامر. ثم نحتاج إلى تغيير الدليل إلى الموقع حيث يتم حفظ الملف new_employee.json.
سيقوم الأمر التالي بطباعة ملف JSON بتنسيق جميل ونظيف:
python -m json.tool new_employee.json
توضح الصورة التالية كيف يبدو الأمر في موجه أوامر Windows.
تعرف على المزيد حول JSON و بايثون
لقد تناولنا كيفية قراءة وكتابة ملفات JSON في بايثون. تسهل مكتبة json المدمجة القيام بكلا الأمرين. إحدى مزايا Python هي الاختيار الغني للمكتبات المضمنة والجهات الخارجية التي تعمل على تبسيط معظم المهام.
إذا كنت تتعلم لغة بايثون أو تخطط لتعلمها، فإن مسار تعلم البرمجة باستخدام بايثون هو وسيلة رائعة للبدء. إنه مصمم للمبتدئين ويحتوي على 5 دورات تفاعلية. ميزة التعلم من خلال دورة تفاعلية هي أنك تحصل على تدريب عملي حقيقي على كتابة التعليمات البرمجية؛ وهذا ضروري لتعلم لغة البرمجة.
يقدم LEARNPYTHON.COM أيضًا دورة كاملة مخصصة لملفات JSON IN PYTHON. الدورة تفاعلية أيضًا وتحتوي على 35 تمرينًا. إذا كنت ترغب في ممارسة المفاهيم التي ناقشناها في هذه المقالة، فهذه الدورة مناسبة لك. تعلم سعيد!
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.