حول 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 المدمجة.