ما هو JSON وما هي إستخداماته؟
ما هو JSON؟ كيف يتم تمثيل / كتابة بيانات JSON بطريقة المصفوفة وطريقة الكائن - Object، ما هي أوجه التشابه والإختلاف بين JSON و XML، وكيف يتم إستخدام صيغة JSON في لغة البرمجة جافا سكريبت، وإستخدامات الدالة JSON.stringify والدالة JSON.parse
ما هو JSON؟
جسون وينطق (جيه سون) وهو إختصار للمصطلح JavaScript Object Notation، هو عبارة عن طريقة لتمثيل وتبادل البيانات ما بين لغات البرمجة المختلفة، بحيث يمكن قراءة وفهم هذه البيانات من قبل البشر، ويسهل أيضا تحليل وإستخدام هذه البيانات في لغات البرمجة المختلفة، وعادة ما يتم إستخدام هذه الطريقة (JSON) لتسهيل نقل البيانات من جهاز المستخدم إلى جهاز الخادم/السيرفر والعكس، حيث يمكنك أن تعتبر البيانات الممثلة بصيغة JSON كـ قاعدة بيانات مؤقتة.
JSON ليس لغة برمجة، ولكن هو صيغة أو طريقة لتمثيل البيانات وهي مدعومة في معظم لغات البرمجة، حيث يتم تحول أي نص مكتوب بصيغة JSON إلى كائن - Object، والعكس.
نظرا لسهولة إنشاء الكائن (Object) في لغة البرمجة JavaScript حيث يتم ذلك بكتابة الأقواس المعقوفة - Curly Braces وبداخلهم يتم كتابة وصف الكائن، تم إنشاء أو إبتكار طريقة JSON لتمثيل البيانات، وبعد ذلك تم دمجها في لغة البرمجة جافا سكريبت.
كيف يتم تمثيل البيانات بإستخدام JSON؟
يتم كتابة / تمثيل البيانات في JSON بطريقتين
تمثيل بيانات JSON بطريقة المصفوفة
وفي هذه الطريقة يتم كتابة الأقواس المربعة (Square Brackets) []
وبداخلهم يتم كتابة البيانات واحدة تلو الأخرى ويفصل بينهم علامة الفاصلة ,
والمثال التالي يوضح شكل البيانات الممثلة بهذه الطريقة
JSON
["Ahmed","Abuelfateh",99,["002040333333", "00201001111111"]]
من المثال السابق سوف تلاحظ أنه يمكنك كتابة أي نوع بيانات بداخل JSON سواء كانت هذه البيانات نصية أو عددية أو حتى إذا كانت هذه البيانات عبارة عن مصفوفة أخرى.
تمثيل بيانات JSON بطريقة الكائن (Object)
وتعد هذه الطريقة هي الأشهر والأكثر إستخداما حيث تمكنك هذه الطريقة من تحديد إسم لكل واحدة من البيانات، مما يسهل كتابة البيانات وإستدعائها دون الحاجة لتذكر ترتيب كتابة البيانات، وفي هذه الطريقة يتم كتابة البيانات بداخل الأقواس المعقوفة (Curly Braces) {}
ويتم كتابة البيانات على هيئة name:value
وهي عبارة عن إسم البيانات متبوعا بـ colon :
وهي النقطتان متبوعا بقيمة البيانات، ويفصل بينهم علامة الفاصلة ,
، ولتوضيح ذلك يمكنك متابعة المثال التالي
JSON
{"name": "Ahmed Abuelfateh","age": 99,"skills": ["php", "javascript", "c++", "..."],"contact": {"tel": "0020403333333","mobile": "00201001111111"}}
من المثال السابق سوف تلاحظ أنه يمكنك تمثيل أو تضمين أي نوع بيانات بطريقة بيانات JSON حيث يمكنك أن تكتب بيانات نصية أو عددية أو مصفوفات وحتى يمكنك تضمين كائنات (Object) بداخل بيانات JSON.
ما هي القيود في تمثيل بيانات JSON؟
بعد ما تعرفنا على طريقة تمثيل البيانات بإستخدام JSON، فيتوجب عليك أن تعرف أنه غير مسموح بإستخدام أي من الكلمات المحجوزة (Reserved Words) في لغة البرمجة جافا سكريبت لتمثل الإسم لأي نوع من البيانات، فلا يمكنك أن تستخدم الكلمة function أو typeof أو if أو أي من هذه الكلمات، ولا يمكنك أيضا أن تستخدم دالة (function) كنوع بيانات، كما في JavaScript Object حيث في لغة البرمجة جافا سكريبت يمكنك كتابة أي دالة لتصبح (method) أو عنصر من عناصر الكائن وذلك غير مسموح به في الكائن JSON.
JSON و XML
أوجه التشابه بين JSON و XML
- كلاهما يمكنك من إستخدام إسم لكل قيمة، مما يسهل عليك قراءة وفهم البيانات
- كلاهما يمكنك من بناء بيانات مركبة بحيث يمكنك أن تقوم بإنشاء بيانات مكونة من مجموعة من البيانات الأخرى كما في المثال السابق
- كلاهما مدعوم من الكثير من لغات البرمجة
أوجه الإختلاف بين JSON و XML
- في طريقة الـ XML يتم كتابة إسم البيانات مرتين، مثال
<name>Ahmed</name>
أما في JSON فيتم كتابة الإسم مرة واحدة فقط، وهي في بداية تعريف البيانات - في طريقة JSON يمكنك أن تستخدم المصفوفات كنوع بيانات بداخل أي عنصر
- في طريقة الـ XML يمكنك تسمية البيانات بأي إسم، أما في JSON فلا يمكنك إستخدام الأسماء المحجوزة لجافا سكريبت
كيف يستخدم JSON في لغة البرمجة جافا سكريبت؟
كما أشرنا سابقا أن JSON مدعوم ومدمج في لغة البرمجة جافا سكريبت، حيث يوجد دالتين في لغة البرمجة JavaScript واحدة لتحويل أي كائن (Object) إلى نص حتى نتمكن من إرساله للخادم بإستخدام تقنية الـ AJAX وأخرى لتحويل أي نص مكتوب بصيغة JSON إلى كائن حتى نتمكن من إجراء العمليات عليه وعادة تستخدم هذه الدالة مع البيانات القادمة من الخادم.
وسوف نبدأ بالدالة الخاصة بتحويل أي كائن في لغة البرمجة جافا سكريبت إلى نص مكتوب بصيغة JSON وهذه الدالة هي JSON.stringify()
وكما تلاحظ أن هذه الدالة هي method أو عضو في الكائن JSON
ويكتب كما هو موضح كل الأحرف أحرف كبيرة، والمثال التالي يوضح كيفية إستخدام الدالة
JSON.stringify()
var obj = {name: "Ahmed Abuelfateh",age: 99};var json_str = JSON.stringify(obj);console.log(json_str); // "{"name":"Ahmed Abuelfateh", "age":99}"
من المثال السابق سوف تلاحظ أنه تم إضافة علامات التنصيص لكل إسم (name, age) وتم تحويل الكائن obj إلى نص بصيغة JSON، ويمكنك تجربة ذلك في الـ console لمشاهدة النتيجة
يتبقى أن نتعرف على الدالة المختصة بتحويل أي نص مكتوب بصيغة JSON إلى كائن، وفي لغة البرمجة جافا سكريبت هذه الدالة هي JSON.parse()
، والمثال التالي يوضح كيفية إستخدامها
JSON.parse()
var txt = '{"name": "Ahmed Abuelfateh", "age": 99}';var obj = JSON.parse(txt);console.log(obj);/*{name: "Ahmed Abuelfateh",age: 99}*/