شرح json الدرس الثاني

اختبار بايثون شرح json الدرس الثاني

 تعلم json python الدرس الثاني تحويل نص json الي كائن python.

ما الفائدة من تحويل نص json الي كائن python؟

مقدمة لاستخدامات json و صفاتها:
يمكنك تخطي المقدمة ان كنت تعرف ما هو json واستخداماتها

ربما قد سمعت عن youtube api والذي يمكنك من استخراج بيانات اي مقطع فيديو او معلومات عن قناة او حتي التحكم في قناتك عند طلب معلومات عن مقطع فيديو او اي شىء متاح يكون الرد عبارة عن نص json يحتوي علي كل المعلومات المطلوبة من عنوان ووصف وعدد اللايكات والكومنتات الخ الخ .... .

ليس هذا فقط يوجد عدد كبير من الشركات التي تقدم مثل هذه الخدمات وبنفس الاسلوب جوجل تمتلك الكثير منها علي سبيل المثال لا الحصر ( google search, google maps, google translate, google play store ) والكثير.

تخيل ببساطة json علي انها شجرة بيانات يتم بناء اغصانها بحرية وبدون قيود.

لا شك انك تعرفت يوماً علي قواعد البيانات مثل mysql او sql او mariadb او حتي excel جميعهم يستخدمون مبدا واحد وهو انشاء قاعدة البيانات ثم انشاء الجداول ولكل جدول مفتاح رئيسي للوصول للبيانات.

في json انت لن تحتاج الي الاتصال بسيرفر قواعد بيانات ولا انشاء قاعدة ولا جداول فقط انشىء كائن يضم ما تشاء يمكن لكل غصن ان يتفرع ويمتد.

مثال علي شكل json:

{
    "Ahmed":{
        "Math":"A",
        "Science":"D",
        "Draw":"B",
        "Sports":"C",
        "Thinking":"A"
    },
    "Sayed":{
        "Math":"B",
        "Science":"B",
        "Draw":"B",
        "Sports":"D",
        "Thinking":"A"
    },
    "Mahmoud":{
        "Math":"D",
        "Science":"A",
        "Draw":"A",
        "Sports":"B",
        "Thinking":"B",
        "Programming":"A"
    }
}
كائن يحتوي علي ثلاثة مفاتيح Ahmed, Sayed, Mahmoud كل مفتاح يحتوي علي قيمة في شكل كائن وداخل الكائن الفرعي هناك عدة مفاتيح اخري ولكل مفتاح قيمة.

لاحظ ان اخر طالب لدية قيمة اضافية عكس الاول والثاني وهي Programming وهذا ما يميز json انه يمكن اضافة تصنيفات وخلايا وتفريعات لا تنتهي من البيانات .

اذا كنت منزعج من المثال اعلاه وتعتقد بانه معقد فهو ليس كذالك وسوف نثبت لك هذا بعد انتهائك من الصف الحالي في تعلم json.

يمين اسفل الشاشة تجد زر Messenger اضغط عليه واطلب الدعم لا تنسي توضيح مشكلتك متاح طيلة الاسبوع 24/7 مجاناً.

اعرف انك متحمس لكتابة كود ومللت من القراءة السابقة ولكن نحن نحاول اعدادك للتحديات التالية حيث اننا نكتب كل قطعة لتوسيع رؤيتك اكثر حتي نستطيع رفع صعوبة التحدي.

مثال علي شكل الكائن في بايثون python object:

students = {
    "Ahmed":{
        "Math":"A",
        "Science":"D",
        "Draw":"B",
        "Sports":"C",
        "Thinking":"A"
    },
    "Sayed":{
        "Math":"B",
        "Science":"B",
        "Draw":"B",
        "Sports":"D",
        "Thinking":"A"
    },
    "Mahmoud":{
        "Math":"D",
        "Science":"A",
        "Draw":"A",
        "Sports":"B",
        "Thinking":"B",
        "Programming":"A"
    }
}

نفس شكل json ولكن في متغير يمكن الوصول لاي قيمة بكل سهولة مثال:

print( students["Mahmoud"]["Math"] ) 
print( students[مفتاح][مفتاح] )
print( students[key][key] )
في المثال السابق سوف يتم طباعة حرف D وهو قيمة مفتاح Math في مفتاح Mahmoud.

هذا سوف ينجح اذا كان الكائن هو كائن بايثون بالفعل وليس نص تم تحميلة من الانترنت او استلامه من api او من ملف محلي.

لذالك حتي نتمكن من استخدام نصوص json في بايثون يجب تحويلها عبر مكتبة json وهي تستخدم اسلوب يدعي serialize and deserialize object .

لن نتعمق في هذا المفهوم لاننا سوف نستخدم مكتبة json.

تحويل نص json الي كائن بايثون:

import json

# متغير بايثون يحتوي علي نص json:
x =  '{ "name":"ahmed", "age":15, "city":"Alexandria"}'

# تحليل متغير اكس او ما يعرف ب parse x:
y = json.loads(x)

# الان يمكن التعامل معه علي انه قاموس بايثون:
print(y["city"])
  1. في البداية قمنا باستدعاء مكتبة json.
  2. ثم صرحنا عن متغير x ووضعنا قيمة كمثال علي كائن json.
  3. ثم قمنا بتحويل قيمة x الي كائن بايثون من خلال دالة loads في json.
  4. وفي النهاية قمنا بطباعة قيمة المفتاح city.

اختبار تحويل json الي كائن بايثون:

بعد ان تعرفت علي json وكيفية تحويلها الي كائن python المطلوب الان داخل المحرر التالي تجد دالة باسم howold.
سوف نقوم بارسال نص json الي تلك الدالة قم بتحويلة الي كائن بايثون ثم ارجع قيمة مفتاح age كما تعلمت.

لاحظ انه يجب ارجاع القيمة عبر return وليس print كما بالمثال التالي:

def howold(jsonStr):
    return pyObj["age"]

لا تنسي تحويل النص الي كائن باستخدام json.loads وضغط زر التشغيل او ctrl + enter.



output
terminal