ما هو JSON ولماذا نحتاج إلى تحليله؟
JSON (JavaScript Object Notation) هو تنسيق نصي خفيف لتبادل البيانات، أصبح المعيار الأساسي لنقل المعلومات بين التطبيقات. على الرغم من اسمه، فإن JSON لا يعتمد على JavaScript ويُستخدم بنشاط في جميع لغات البرمجة الحديثة.
المزايا الرئيسية لـ JSON:
- تنسيق قابل للقراءة البشرية
- هيكل بيانات بسيط
- دعم عالمي
- حجم مضغوط مقارنة بـ XML
مثال على كائن JSON:
{
"name": "أحمد",
"age": 30,
"is_active": true,
"hobbies": ["القراءة", "ركوب الدراجات", "السفر"]
}
وحدة json المدمجة في Python
توفر Python وحدة مدمجة قوية json للتعامل مع بيانات JSON. تتيح هذه الوحدة إجراء عمليتين رئيسيتين:
- إلغاء التسلسل (Deserialization) — تحويل سلسلة JSON إلى كائنات Python
- التسلسل (Serialization) — تحويل كائنات Python إلى سلسلة JSON
لبدء العمل، نقوم باستيراد الوحدة:
import json
تحليل سلسلة JSON إلى كائنات Python
استخدام json.loads()
الدالة json.loads() (load string) تحول سلسلة JSON إلى كائن Python مطابق:
import json
json_data = '{"name": "خالد", "age": 25, "is_active": false}'
parsed_data = json.loads(json_data)
print(parsed_data) # {'name': 'خالد', 'age': 25, 'is_active': False}
print(type(parsed_data)) # <class 'dict'>
بعد التحليل، يمكنك التعامل مع البيانات كقاموس عادي:
print(parsed_data['name']) # خالد
print(parsed_data['age']) # 25
تطابق أنواع البيانات
يتم تحويل أنواع JSON تلقائيًا إلى أنواع Python:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number | int/float |
| true/false | True/False |
| null | None |
تحويل كائنات Python إلى JSON
استخدام json.dumps()
الدالة json.dumps() تحول كائنات Python إلى سلسلة JSON:
data = {'name': 'سارة', 'age': 30, 'is_active': True}
json_string = json.dumps(data)
print(json_string) # {"name": "سارة", "age": 30, "is_active": true}
معاملات التنسيق
لتحسين قابلية القراءة، استخدم المعاملات الإضافية:
data = {'name': 'سارة', 'age': 30, 'city': 'القاهرة'}
json_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_pretty)
المعاملات الرئيسية:
indent— المسافات البادئة للتنسيقsort_keys— ترتيب المفاتيح أبجديًاensure_ascii— دعم الأحرف Unicode
التعامل مع ملفات JSON
قراءة JSON من ملف
استخدم json.load() لقراءة بيانات JSON من ملف:
with open('data.json', 'r', encoding='utf-8') as file:
content = json.load(file)
print(content)
كتابة JSON إلى ملف
الدالة json.dump() تكتب البيانات إلى ملف:
data = {'city': 'الرياض', 'temperature': 35, 'weather': 'مشمس'}
with open('weather.json', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4, ensure_ascii=False)
نصائح للتعامل مع الملفات
- حدد دائمًا الترميز (encoding) كـ utf-8 لدعم اللغة العربية
- استخدم
ensure_ascii=Falseللحفاظ على الأحرف العربية - أغلق الملفات تلقائيًا باستخدام
with