تقنية جيسون JSON – التقرير


0001

00020003000400050006000700080009

 

المحتوى

  1. مقدمة. 3
  2. 2. البنية والمحتوى[2] 4
  3. المحاسن والمساوئ بالمقارنة مع XML[5] 7
  4. بعض الأمثلة عن الاستخدامات العملية. 8
  5. المراجع. 8

1.    مقدمة

جايسون “JSON” أو طريقة ترقيم عناصر جافاسكريبت “JavaScript Object Notation”[1] وهي صيغة خفيفة لتبادل البيانات. تتميز بسهولة كتابتها وقراءتها بواسطة البشر، كما أنها سهلة التوليد والقراءة بواسطة الآلات.[2]

الشكل 1: رمز لغة جايسون

جايسون هي صيغة نصية مستقلة تماما عن لغات البرمجة، لكنها تستخدم الأعراف المستخدمة عادة لدى مبرمجي عائلة سي “C”، وذلك يشمل لغات سي”C”، سي بلس بلس “C++”، سي شارب “C#”، جافا “Java”، جافاسكريبت “JavaScript”، بيرل “Perl”، بايثون “Python”، والكثير غيرها، وذلك يجعل لغة جايسون مثالية من أجل أغراض تبادل البيانات.[2]

تم تعريف بنية هذه اللغة بواسطة دوغلاس كروكفورد “Douglas Crockford” حيث تم تصميمها خصيصا بحيث تكون سهلة القراءة بالنسبة للبشر، وتم استمدادها من لغة جافاسكريبت، ويتم كتابتها بملفات لاحقتها “.json”[3][4]، أما الهدف الأساسي منها فكان الحاجة الماسة إلى لغة تؤمن تواصل بالزمن الحقيقي بين المخدم والمتصفح دون الحاجة لإضافات مثل الفلاش “Flash” أو برمجيات الجافا “Java applets” كما كان الوضع في أوائل القرن الواحد والعشرين.[3]

على الرغم من أن الهدف من جايسون كان إكمال عمل جافاسكريبت، باتت هذه اللغة التي تستخدم بكثرة مع جافاسكريبت مستقلة عنها ومستخدمة مع طيف واسع من اللغات الأخرى. كما أنها أصبحت معتمدة ضمن معايير ECMA الدولية في عام 2013 بالمعيار ECMA-404.[3]

2.    البنية والمحتوى[2]

يتم إنشاء ملفات جايسون باستخدام بنيتين أساسيتين[2]:

  • مجموعة من أزواج “اسم / قيمة”، حيث يتم التعرف عليها في لغات مختلفة على أنها عنصر “object” أو سجل “record” أو قاموس “dictionary” أو جدول تجزئة “hash table” أو قائمة ذات مفتاح “keyed list” أو مصفوفة مترابطة “associated array”.
  • قائمة مرتبة من القيم، وفي معظم اللغات يتم التعرف عليها كمصفوفة “array” أو شعاع “vector” أو قائمة “list” أو ترتيب “sequence”.

حيث أن هذه البنى معروفة لدى كل اللغات البرمجية الحديثة كبنى بيانات “data structures”، وتدعمها هذه اللغات بطريقة ما، ومن المنطقي أن تكون صيغة البيانات المتبادلة مع لغات البرمجة أيضا معتمدة عليها.[2]

العنصر “object“: وهو مجموعة غير مرتبة من أزواج “اسم / قيمة”. حيث يبدأ بقوس أيسر “{” وينتهي بقوس أيمن “}”، ويتبع الاسم نقطتان “:” أما أزواج “اسم / قيمة” فيفصل بينها فاصلة “,”.

الشكل 2: العنصر “object”

المصفوفة “array“: وهي مجموعة مرتبة من القيم “values”. حيث تبدأ بقوس أيسر “{” وتنتهي بقوس أيمن “}”، ويتم الفصل بين القيم باستخدام الفاصلة “,”.

الشكل 3 المصفوفة “array”

القيمة “value“: قد تكون سلسلة “string” بين علامتي تنصيص أو رقما أو قيمة صحيحة “true” أو قيمة خاطئة “false” أو قيمة لا شيء “null”، وقد تكون عنصرا “object” أو مصفوفة “array”، ويمكن لهذه العناصر أن تكون متداخلة ببعضها.

الشكل 4 القيمة “value”

السلسلة “string“: وهي عبارة عن مجموعة مرتبة مكونة من صفر أو أكثر من رموز اليونيكود “Unicode” موضوعة داخل علامتي تنصيص باستثناء بعض العناصر الخاصة التي تتطلب وجود خط مائل عكسي قبلها “\”، ويتم تمثيل كل رمز كسلسلة رمزية واحدة، وذلك بشكل مشابه كثيرا لما هو موجود بسلاسل لغتي سي وجافا.

الشكل 5 السلسلة “string”

الرقم “number“: وهو مشابه بشدة للرقم الموجود في لغتي سي وجافا، باستثناء أنه لا يمكن استخدام الصيغ الثمانية والست عشرية.

الشكل 6 الرقم “number”

أما بالنسبة للمسافة الفارغة “whitespace” فيمكن إدراجها بين أي زوج من الرموز.

3.    المحاسن والمساوئ بالمقارنة مع XML[5]

على الرغم من اختلاف التقنيتين وطبيعة لغة XML التي تسمح لها بالقيام بالكثير غير تخزين وتمثيل قواعد المعطيات، سنقوم بعمل مقارنة بين JSON وXML فيما يتعلق بانتشارها وسهولتها ودعمها كلغة قواعد معطيات.

JSON XML
محاسن JSON بالمقارنة مع XML
طريقة فك تشفير عناصر جافاسكريبت مؤتمتة بشكل كامل، وقد لا تحتاج إلى أي برمجية إضافية على الإطلاق يجب على المطورين كتابة بعض البرمجيات في جافاسكريبت لفك تشفير أو تشفير البيانات من وإلى صيغة XML.
دعم جيد جدا في كل المتصفحات مدعومة في كافة المتصفحات الحديثة، لكن عندما يتعلق الأمر بالتشغيل على عدة متصفحات فقد نصادف بعض المشاكل
صيغة مفهومة بفضل الطريقة المعتمدة على أزواج “اسم / قيمة” صيغتها الموسعة بسبب الوسوم “tags” ومساحات الأسماء “namespaces” تجعلها أصعب للفهم من json
مدعومة من قبل الكثير من أدوات AJAX ومكاتب جافاسكريبت لا تتمتع بالدعم ذاته من طرف أدوات AJAX
واجهتها البرمجية بسيطة (عندما يتعلق الموضوع بجافاسكريبت والعديد من اللغات الأخرى) واجهاتها البرمجية أكثر تعقيدا
مساوئ JSON بالمقارنة مع XML
لا تدعم قواعد تعاريف رسمية مما يؤدي إلى صعوبة في التواصل والتطبيق بين الواجهات المتصلة يمكن استخدام مخططات “schema” لغة xml لتعريف قواعد ناظمة لها
لا تدعم مساحات الأسماء مما يجعل توسيعها عملية صعبة[3] تدعم مساحات الأسماء بشكل جيد مما يتيح لها العديد من خيارات التوسع في المخططات
محدودية الدعم في أدوات التطوير تدعمها مجموعة واسعة من أدوات التطوير
لا يوجد لها دعم في المنتجات المتعلقة بخدمات الويب (كمخدمات التطبيقات وغيرها) على الأقل ليس حتى الآن مدعومة من كل منتجات خدمات الويب
الجدول 1 محاسن ومساوئ لغة JSON بالمقارنة مع لغة XML

4.    بعض الأمثلة عن الاستخدامات العملية

يبين الكود 1 مثالا عن كيفية الكتابة بلغة جيسون

{

“firstName”: “John”,

“lastName”: “Smith”,

“age”: 25,

“address”: {

“streetAddress”: “21 2nd Street”,

“city”: “New York”,

“state”: “NY”,

“postalCode”: “10021”

},

“phoneNumber”: [

{

“type”: “home”,

“number”: “212 555-1234”

},

{

“type”: “fax”,

“number”: “646 555-4567”

}

],

“gender”: {

“type”: “male”

}

}

الكود 1 كيفية الكتابة بلغة json

أهم استخدامات لغة جيسون تكمن في استجابات خدمات الويب، حيث أنه قديما كانت تعتمد هذه الخدمات على لغة xml كالصيغة الأساسية للبيانات التي سيتم إرسالها، لكن منذ ظهور لغة جيسون، أصبحت هي اللغة المفضلة، وذلك بسبب خفتها وإمكانية أتمتتها بشكل كامل في معظم الأحيان.[6]

5.    المراجع

  1. https://www.json.org/json-ar.html
  2. https://www.json.org/index.html
  3. https://en.wikipedia.org/wiki/JSON
  4. https://www.tutorialspoint.com/json/json_tutorial.pdf
  5. https://myarch.com/json-pros-and-cons/
  6. https://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it

 

أضف تعليق