كيفية قراءة وكتابة ملفات Json في بايثون

How Read Write Json Files Python



تشرح هذه المقالة كيفية التعامل مع ملفات وبيانات JSON بلغة برمجة بايثون. تأتي Python مع وحدة json مضمنة تجعل معالجة بيانات JSON سهلة ومباشرة.

حول JSON

JSON (JavaScript Object Notation) هو تنسيق ملف ومعيار لتخزين البيانات يستخدم أزواج من المفاتيح والقيمة لتخزين البيانات وتبادلها. إنه تنسيق تبادل البيانات الأكثر استخدامًا ، وغالبًا ما يُرى في واجهات برمجة تطبيقات RESTful ، وقواعد البيانات خفيفة الوزن ، وملفات التكوين ، وغيرها من البرامج غير المتصلة بالإنترنت أو عبر الإنترنت التي تحتاج إلى تخزين البيانات واستردادها وتبادلها. تتضمن معظم لغات البرمجة مكتبات لتحليل بيانات JSON وكتابتها افتراضيًا و JSON هو تنسيق بيانات غير محدد بلغة برمجة. عادةً ما تحتوي القيم المخزنة في ملف JSON أو حمولة على سلاسل وأرقام وأنواع بيانات قابلة للتسلسل مثل القوائم (المصفوفات).







قواميس JSON و Python

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



قراءة وإلقاء بيانات JSON في بايثون

يمكن استرداد بيانات JSON كاستجابة من خادم ، وقراءتها من ملف ، ومقطعة من معلمات استعلام URL وما إلى ذلك. ستركز هذه المقالة بشكل أساسي على قراءة بيانات json من ملف مخزن محليًا. لنفترض أن ملف test.json يحتوي على البيانات التالية:



{'codename': 'Eoan Ermine'، 'version': 'Ubuntu 19.10'}

لقراءة ملف test.json في بيثون ، يمكنك استخدام الكود أدناه:





يستوردjson

مع افتح ('test.json') كماF:
البيانات=json.حمل(F)

أحمق=json.مقالب(البيانات)

مطبعة (البيانات)
مطبعة (نوع(البيانات))
مطبعة (أحمق)
مطبعة (نوع(أحمق))

يستورد السطر الأول في الكود أعلاه وحدة json. في السطر التالي ، يتم استخدام الخيار open لقراءة محتويات الملف بأمان. داخل الكتلة المفتوحة ، تُستخدم طريقة json.load لقراءة محتويات الملف وتخزينها في متغير البيانات. يتم تحويل البيانات التي تم تحميلها في الخطوة السابقة مرة أخرى إلى سلسلة json باستخدام طريقة json.dump. سيؤدي تشغيل الكود أعلاه إلى إظهار الإخراج التالي:

{'اسم الرمز':'إيوان إرمين'و 'إصدار':'أوبونتو 19.10'}
<صف دراسي 'قاموس'>
{'اسم الرمز':'إيوان إرمين'و 'إصدار':'أوبونتو 19.10'}
<صف دراسي 'شارع'>

لاحظ في الإخراج أعلاه أن طريقة json.load تقرأ بيانات json الأولية في قاموس بيثون بينما تحول طرق json.dumps قاموسًا إلى سلسلة متوافقة مع بنية JSON. بمجرد تحويل كائن JSON إلى كائن قاموس Python ، يمكنك استخدام أساليب قاموس Python المضمنة للتعامل مع البيانات. المثال أعلاه أساسي جدًا ولا يتضمن مصفوفات في بيانات JSON أو قيم متداخلة. لكن في بايثون ، يمكنك التعامل مع هذه القيم مثل أي قواميس وقوائم أخرى متداخلة.



الفرز والطباعة الجميلة لبيانات JSON

تدعم طريقة json.dump بعض المعلمات الاختيارية لفرز المفاتيح وطباعة الإخراج لتحسين إمكانية القراءة.

يستوردjson

مع افتح ('test.json') كماF:
البيانات=json.حمل(F)

أحمق=json.مقالب(البياناتوترتيب_المفاتيح=حقيقيومسافة بادئة=4)
مطبعة (أحمق)

سيظهر الرمز أعلاه الناتج التالي:

{
'الاسم الرمزي': 'إيوان إرمين' ،
'الإصدار': 'Ubuntu 19.10'
}

نوع البيانات التحويلات

توضح القائمة أدناه كيفية تحويل قيم JSON إلى كائنات بيثون والعكس صحيح.

جسون بايثون
سلسلة ص
عدد int أو تعويم
خطأ صحيح خطأ صحيح
باطل لا أحد
مجموعة مصفوفة قائمة
موضوع قاموس

وحدة سطر الأوامر Json.tool

يتضمن Python أداة مساعدة لطيفة لسطر الأوامر json.tool يمكن استخدامها للتحقق من صحة سلاسل وملفات JSON وطباعتها.

صدى $'{' codename ':' Eoan Ermine '،' version ':' Ubuntu 19.10 '}'| python3 -m json.أداة

سيظهر لك تشغيل الأمر أعلاه الإخراج التالي:

{
'الاسم الرمزي': 'إيوان إرمين' ،
'الإصدار': 'Ubuntu 19.10'
}

يمكنك أيضًا استخدام json.tool مع ملفات JSON. استبدل in_file و out_file في الأمر أدناه بالقيم التي تريدها:

$ python3 -m json.أداةin_file out_file

بخلاف الطباعة الجميلة والفرز والتحقق من بيانات JSON ، فإن json.tool لا يفعل أي شيء آخر. لذلك إذا كنت تريد معالجة أي بيانات JSON ، فيجب عليك كتابة التعليمات البرمجية المخصصة الخاصة بك باستخدام وحدة JSON المدمجة.