الدرس 33 من 56 · مهارات إضافية لكل شيء

JSON: بطاقة تعارف عالمية لبياناتك

تخيل كل برامج الدنيا تتكلم لغات مختلفة: بايثون، جافا سكريبت، روبي... كيف تتبادل المعلومات؟ اتفقوا على بطاقة تعارف موحدة اسمها JSON — كل برنامج بالعالم يفهمها!

شكلها بسيط جداً — أزواج "اسم: قيمة" بين قوسين معقوصين:

{
  "name": "فليكس",
  "age": 17,
  "hobbies": ["برمجة", "ألعاب"]
}

وبايثون نتعامل معها بسلاسة تامة، لأن شكلها قريب من القاموس اللي تعرفه:

import json

me = {"name": "فليكس", "age": 17, "hobbies": ["برمجة", "ألعاب"]}

# نحول قاموس بايثون إلى نص JSON
text = json.dumps(me, ensure_ascii=False)
print(text)

# ونرجعه نص JSON إلى قاموس
back = json.loads(text)
print(back["hobbies"][0])  # برمجة

dumps تعني "حوّل لسلسلة نصية"، وloads "حمّل من نص". والسطر ensure_ascii=False هو سر اللغة العربية — بدونه تطلع الحروف العربية كأرقام غريبة! احفظه.

والأهم: حفظ بياناتك بملف JSON — هذي أفضل طريقة تحفظ فيها إعدادات لعبتك أو قائمة أصدقائك:

import json

me = {"name": "فليكس", "score": 950}

# الحفظ
with open("player.json", "w", encoding="utf-8") as f:
    json.dump(me, f, ensure_ascii=False)

# القراءة
with open("player.json", encoding="utf-8") as f:
    loaded = json.load(f)
print("نقاطك المحفوظة:", loaded["score"])

احفظ الفرق بذكاء: dump وload تشتغل مع ملف، وdumps وloads تشتغل مع نص. الـ s الزايدة تعني string!

وين تستخدم JSON بالحقيقة؟ كل مكان تقريباً: حفظ نقاط الألعاب، إعدادات البرامج، مواقع التواصل ترسل بياناتها JSON، والذكاء الاصطناعي يستقبل الطلبات JSON. من اليوم، بياناتك تتكلم لغة عالمية.

اختبار سريع للدرس

جاوب على كل الأسئلة — لازم كلها صح. إذا غلطت بيطلع صندوق ذهبي يفهّمك وش الخطأ. مو عيب تغلط، كل مبرمج بالعالم غلط وأخذ منها درس.

1. وش تسوي json.loads؟
2. ليش نكتب ensure_ascii=False؟
3. وش الفرق بين dump و dumps؟
الدرس 32 الدرس 34 — قوائم أذكى: سطر واحد يسوي عمل عشرة
FeLiXFeLiX AI — مساعد المنصتين