كبسولة برمجة #الجزء_الثاني

#كبسولة_برمجه ( يعني ايه json و استخدامها مع ajax)
تعريف Json
هو إختصار للمصطلح JavaScript Object Notation
,هو عبارة عن طريقة لتمثيل وتبادل البيانات ما بين لغات البرمجة المختلفة، بحيث يمكن قراءة وفهم هذه البيانات من قبل البشر ويسهل أيضا تحليل وإستخدام هذه البيانات في لغات البرمجة المختلفه وعادة ما يتم إستخدام هذه الطريقة (JSON) لتسهيل نقل البيانات من جهاز المستخدم إلى جهاز الخادم/السيرفر والعكس حيث يمكنك أن تعتبر البيانات الممثلة بصيغة JSON كـ قاعدة بيانات مؤقتة.
JSON
ليس لغة برمجة ولكن هو صيغة أو طريقة لتمثيل البيانات وهي مدعومة في معظم لغات البرمجة، حيث يتم تحول أي نص مكتوب بصيغة JSON إلى Object (كائن ) والعكس.
تم إنشاء أو إبتكار طريقة JSON لتمثيل البيانات وبعد ذلك تم دمجها في لغة البرمجة JavaScript.

كيف يتم تمثيل البيانات بإستخدام JSON؟

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

1 - تمثيل بيانات JSON بطريقة Array

وفي هذه الطريقة يتم كتابة الأقواس المربعة (Square Brackets) [ ] وبداخلهم يتم كتابة البيانات واحدة تلو الأخرى ويفصل بينهم علامة الفاصلة والمثال التالي يوضح شكل البيانات الممثلة بهذه الطريقة
example :- 1]
“Islam”,
“Diab”,
21,
[“00249123456”, “002499123456789”]
]

من المثال السابق سوف تلاحظ أنه يمكنك كتابة أي نوع بيانات بداخل JSON سواء كانت هذه string أو integer أو حتى إذا كانت هذه البيانات عبارة عن Array تانيه.

2 - تمثيل بيانات JSON بطريقة Object

وتعد هذه الطريقة هي الأشهر والأكثر إستخداما حيث تمكنك هذه الطريقة من تحديد إسم لكل واحدة من البيانات، مما يسهل كتابة البيانات وإستدعائها دون الحاجة لتذكر ترتيب كتابة البيانات، وفي هذه الطريقة يتم كتابة البيانات بداخل الأقواس المعقوفة (Curly Braces) { } ويتم كتابة البيانات على هيئة name:value وهي عبارة عن إسم البيانات متبوعا بـ colon : وهي النقطتان متبوعا بقيمة البياناتويفصل بينهم علامة الفاصلة , ولتوضيح ذلك يمكنك متابعة المثال التالي

example : - 2 {
“name”: “Islam Diab”,
“age”: 21,
“skills”: [“php”, “javascript”, “C sharp”, “…”],
“contact”: {
“tel”: “00249123456”,
“mobile”: “00249123456789”
}
}

من المثال السابق سوف تلاحظ أنه يمكنك تمثيل أو تضمين أي نوع بيانات بطريقة بيانات JSON حيث يمكنك أن تكتب بيانات string أو integer أو Array وحتى يمكنك تضمين كائنات (Objects) بداخل بيانات JSON.

الفرق بين XML و JSON

أوجه التشابه بين JSON و XML
1 - كلاهما يمكنك من إستخدام إسم لكل قيمة، مما يسهل عليك قراءة وفهم البيانات
2 - كلاهما يمكنك من بناء بيانات مركبة بحيث يمكنك أن تقوم بإنشاء بيانات مكونة من مجموعة من البيانات الأخرى كما في المثال السابق
3 - كلاهما مدعوم من الكثير من لغات البرمجة

أوجه الإختلاف بين JSON و XML
1 - في طريقة الـ XML يتم كتابة إسم البيانات مرتين، مثال Ahmed أما في JSON فيتم كتابة الإسم مرة واحدة فقط، وهي في بداية تعريف البيانات
2 - في طريقة JSON يمكنك أن تستخدم المصفوفات كنوع بيانات بداخل أي عنصر
3 - طريقة الـ XML يمكنك تسمية البيانات بأي إسم، أما في JSON فلا يمكنك إستخدام الأسماء المحجوزة

استخدام جسون في Ajax

شفرة Javascript التالية يبين كيف يمكن للعميل استخدام(XMLHttpRequest)لطلب كائن(object,) في تنسيق جسون من الخادم. (جذف البرمجه من جهه الخادم، بل لابد من تشكيل للرد على الطلبات على url مع سلسله منسقه من json.)

var the_object = {};
var http_request = new XMLHttpRequest();
http_request.open(“GET”, url, true);
http_request.onreadystatechange = function () {
if (http_request.readyState == 4 && http_request.status == 200) {
the_object = JSON.parse(http_request.responseText);
}
http_request = null;
};
http_request.send(null);
علما بأن استخدام (XMLHttpRequest) في هذا المثال ليس عبر متصفح متوافق ؛ الاختلافات النحوية غير متوفرة في للإنترنت إكسبلورر، أوبرا} ،وسفاري، وعلى متصفحات موزيلا. فائدة XMLHttpRequest محدودة بسبب سياسة المصدر نفسه : العنوان (URL)لكي يرد على الطلب يجب أن يتواجد في نفس المجال(DNS) مثل الخادم الذي يستضيف الصفحة التي تحتوي على الطلب. بدلا من ذلك، فإن النهج (JSONP) يشتمل على استخدام وظيفة رد الاتصال المشفرة مرت بين العميل والخادم للسماح العميل بتحميل بيانات جسون من مجالات الطرف الثالث، وإخطار وظيفة الطالب عند الانتهاء، على الرغم من أن هذا يفرض بعض المخاطر الأمنية ومتطلبات إضافية على الخادم.
ويمكن أيضا استخدام عناصر المتصفحات

يمكن الفعال يمكن أن تستخدم أيضا لنقل البيانات جسون. مع هذا الأسلوب كان من الممكن أن يحصل كل ما حول نفس سياسه الاصل لكنه غير آمن. JSONRequest وقد اقترح كبديل أكثر أمانا.

القضايا الأمنية
على الرغم من جسون يقصد به أن يكون تنسيق متسلسل للبيانات، والتصميم على مجموعة فرعية من لغة البرمجة جافا سكريبت هموما أمنية عدة. وسط هذه المخاوف بشأن استخدام مترجم جافا سكريبت الفعال لتنفيذ نص جسون بصيغته جافا سكريبت، مما يعرض البرنامج النصي لشاردة أو خطأوارد فيه، وكثيرا مايكون مصدر قلق كبير عند التعامل مع البيانات التي تم استردادها من الإنترنت. في حين ليست الوسيلة الوحيدة لعملية جسون، وهي تقنية سهلة وشعبية، نابعة من تصميم جسون JSON’s لتكون متوافقة مع عمليه جافا سكريبت ()evel، ويتضح ذلك من اكواد ورموز الأمثلة التالية.

جافا سكريبت eval()

لأن جميع تنسيقات نصوص جسون أيضا دمج الجملة القانونية لاكواد الجافا سكريبت، وسيلة سهلة للبرنامج جافا سكريبت لتحليل جسون - تنسيق البيانات هو استخدام eval() المدمج في وظيفة جافا سكريبت eval()، والذي صمم لتقييم تعبيرات جافا سكريبتJavaScript. بدلا من استخدام جسون - محلل محددة، جافا سكريبت تترجم هي نفسهامستخدمه execute بيانات جسون الأصلي لإنتاج كائنات (object)جافا سكريبت.

تقنية وحدة التقييم eval()يخضع لنقاط ضعف أمنية إذا كانت البيانات وكامل بيئة جافا سكريبت ليست ضمن السيطرة على مصدر واحد موثوق به. إذا كانت البيانات هي في حد ذاتها غير موثوق بها، على سبيل المثال، قد يكون عرضة للهجمات الخبيثة شفرة جافا سكريبت الحقن ؛ ما لم يتم استخدام وسائل إضافية للتحقق من صحة البيانات الأولى. التعبيرات العادية تستخدم أحيانا لتنفيذ هذا الاختيار قبل استدعاء eval أيضا، مثل هذه الثقة من الانتهاكات تؤدي إلى احتمال إنشاء مواطن ضعف لسرقهالبيانات والتزوير والتوثيق، وغيرها من احتمال إساءة استخدام البيانات والموارد. اف ار سي FRC التي تعرف جسون (RFC 4627) يوحي باستخدام التعليمات البرمجية التالية للتحقق من صحة جسون eval’ing قبل ذلك (المتغير ‘نص’,‘text’ هو مدخل جسون) :

var my_JSON_object = !(/[^,:{}[]0-9.-+Eaeflnr-u \n\r\t]/.test(
text.replace(/"(\.|[^"\])*"/g,))) &&
eval(’(’ + text + ‘)’);

#Hot_Post
#Coretabs
@antarsidgi

5 Likes