دليل JSON وبايثون: قراءة وكتابة ومعالجة البيانات

1. ما هو JSON؟

نظرة عامة على JSON

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

هيكل JSON

يتكون JSON من أزواج المفتاح والقيمة، وتكون البيانات محاطة بأقواس متعرجة {}. كمثال بسيط، تخيل البيانات التالية:

{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "courses": ["Math", "Physics", "Chemistry"]
}

يمكن أن يتضمن هذا الهيكل قوائم وكائنات متداخلة، مما يجعله مرنًا للغاية.

2. الطرق الأساسية لقراءة ملفات JSON باستخدام بايثون

إدراج مكتبة json في بايثون

في بايثون، يمكنك بسهولة التعامل مع ملفات JSON باستخدام مكتبة json القياسية. لا يلزم تثبيت إضافي، وتتوفر الوظائف الأساسية المتعلقة بقراءة الملفات وكتابتها بشكل افتراضي.

كيفية قراءة ملفات JSON

سنشرح كيفية قراءة البيانات من ملف باستخدام دالة json.load(). يوضح المثال التالي رمزًا بسيطًا لقراءة JSON من ملف ومعالجة البيانات كقاموس.

import json

with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

print(data)
侍エンジニア塾

3. كيفية قراءة سلاسل JSON باستخدام بايثون

استخدام دالة json.loads()

عند تحويل بيانات JSON المعطاة كسلسلة إلى قاموس بايثون، نستخدم دالة json.loads(). تُستخدم هذه الدالة بشكل متكرر عند معالجة سلاسل JSON في استجابات واجهة برمجة التطبيقات (API) وما شابه.

import json

json_string = '{"name": "Alice", "age": 25, "city": "Tokyo"}'
data = json.loads(json_string)

print(data)

بهذه الطريقة، يمكنك بسهولة تحويل بيانات JSON كسلسلة إلى قاموس.

4. نقاط يجب الانتباه إليها وإجراءات التعامل مع الأخطاء عند قراءة ملفات JSON

الأخطاء الشائعة وحلولها

عند قراءة ملفات JSON، أحد أكثر الأخطاء شيوعًا هو JSONDecodeError. يحدث هذا الخطأ عندما لا يكون الملف بتنسيق JSON صحيح. من المهم التعامل مع الأخطاء بشكل صحيح والتحقق من تفاصيل الخطأ.

import json

try:
    with open('data.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
except json.JSONDecodeError as e:
    print(f"خطأ في قراءة JSON: {e}")

مشاكل الترميز (Encoding)

في ملفات JSON التي تحتوي على اللغة اليابانية، يجب الانتباه إلى ترميز الأحرف. سيؤدي تحديد encoding='utf-8' إلى منع تشوه الأحرف.

5. المعالجة الفعالة لبيانات JSON الكبيرة

معالجة البيانات مع مراعاة كفاءة الذاكرة

إذا قمت بتحميل ملف JSON ضخم إلى الذاكرة دفعة واحدة، فقد تواجه نقصًا في الذاكرة. لتجنب ذلك، يوصى باستخدام مكتبات التدفق مثل ijson.

import ijson

with open('large_file.json', 'r', encoding='utf-8') as f:
    for item in ijson.items(f, 'item'):
        print(item)

باستخدام ijson، يمكنك معالجة البيانات الكبيرة بكفاءة.

6. كيفية استخدام بيانات JSON بعد تحويلها إلى قاموس بايثون

عمليات القاموس الأساسية

يصبح التعامل مع البيانات سهلاً للغاية عن طريق تحويل JSON إلى نوع قاموس. على سبيل المثال، يمكنك الحصول على القيم المقابلة لمفتاح معين أو تعديل البيانات.

# أمثلة على عمليات بيانات القاموس
print(data['name'])  # سيتم عرض 'Alice'
data['age'] = 26  # تحديث القيمة
data['email'] = 'alice@example.com'  # إضافة مفتاح وقيمة جديدين

7. شرح طريقة كتابة JSON في بايثون أيضًا

الكتابة إلى ملف JSON

لكتابة بيانات القاموس التي تم التعامل معها في بايثون إلى ملف بتنسيق JSON، استخدم دالة json.dump(). يتيح لك هذا حفظ البيانات المحدثة.

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

يقوم الخيار indent=4 بتنسيق الإخراج، ويقوم ensure_ascii=False بحفظ اللغة اليابانية كما هي.