JSON
المحتويات
- YAML
- http_request.send(null);
- الكفاءة
- كائن مراجع
- الأم جسون
- مايكروسوفت إنترنت إكسبلورر 8
- 646 555-4567
- طلب التزوير عبر الموقع
- لا شئ
- أنواع البيانات وبناء الجمل والأمثلة
- "state": "NY",
- http_request.onreadystatechange = function {
- XML
- JSONP
- استخدام جسون في اياكس Ajax
- جافا سكريبت eval
- var p = JSON.parse(<contact);
- القضايا الأمنية
- }
- eval('(' + text + ')');

قبل الخوض في التفاصيل، جسون ، (اختصار: ترميز الكائنات باستعمال جافا سكريبت)، هي صيغة تبادل بيانات خفيفة الوزن، ذات معيار مفتوح. وتستند إلى نص، يكون تمثيل البيانات بصيغه بسيطه ومصفوفات مترابطه قابله لقراءه الإنسان تسمى كائنات (objects). ونتناول فيما يلي مزيدًا من التفاصيل.
ومن ناحية أخرى، في ديسمبر 2005، بدأت (ياهو!) بتقديم بعض خدماتها على شبكة الإنترنت اختياريا في جسون JSON.(جوجل) بدأت بتقديم جسون لتغذيه (جي دي أي تي أي) GData بروتوكول الإنترنت في ديسمبر 2006.
وفي السياق ذاته، تنسيقات جسون غالبا ما تستعمل لنقل وتنظيم تسلسل البيانات عبر شبكات الاتصال
علاوةً على ذلك، تطبيقه الرئيسي هو في اياكس (AJAX) برمجة تطبيقات الويب، حيث أنها تخدم كبديل لصيغة لغة الترميز القابلة للامتداد (XML)
وعلى صعيد آخر، على الرغم من أن جسون يعتمد على مجموعة فرعية أو جزء من لغة البرمجة (جافا سكريبت JavaScript) (على وجه التحديد، المقياس والمعيار ECMA-262 الإصدار الثالث - ديسمبر 1999) يستعمل عادة مع تلك اللغة، فهو يعتبر لغة (مستقله في تنسيق البايانات) الاكواد لتوليد وتوزيع وإنتاج بيانات جسون متاحة بسهولة لمجموعة كبيرة ومتنوعة من لغات البرمجة موقع json.org يقدم قائمة شاملة من ارتباطات جسون الموجودة، منظم بواسطه اللغة.
ومن جهة أخرى، تنسيق جسون محددة أصلا في ار اف سي ( من قبل دوغلاس كروكفورد نوع جسون الرسمي في الإنترنت هو application/json امتداد ملفات جسون هي.json
YAML
ومن ناحية أخرى، YAML عروض لبناء بيانات الجملة العلائقية (Relational): بدلا من تكرار بيانات مماثلة في وقت لاحق في وثيقة، وثيقة YAML يمكن أن تشير إلى مرساة في وقت سابق من file/ stream Recursive structures(مثلًا، يمكن أن أعرب عن صفيف (array) تحتوي على نفسها) تكون على هذا النحو. مثلًا، قد يكون الفيلم قاعدة بيانات قائمة الجهات الفاعلة (والسمات الخاصة بهم) تحت يلقي الفيلم، وأيضا أفلام قائمة (والسمات الخاصة بهم) تحت محفظة الفاعل.
Blocks:
Relational:
ومن ناحية أخرى، سواء من الناحية الوظيفية وبناء الجملة، جسون بشكله الفعال مجموعة فرعية من YAML. أشهر مكتبه ل YAML مكتبة (Syck) أيضاتوزع جسون. قبل YAML الإصدار 1.2، جسون كان فرع لا بأس به من الكمال، وذلك أساسا بسبب YAML تفتقر إلى معالجة مواطن من UTF - 32 والمطلوب فواصل الفاصلة الواجب اتباعها من قبل الفراغات
ومن جهة أخرى، YAML يستعمل لبنة بناء الجملة البادئة للسماح للتنسيق البيانات المركبة دون استخدام أحرف إضافية (أي: أقواس، بين قوسين، علامات الاقتباس، الخ). إلى جانب إعطاء YAML مظهرا مختلفا عن جسون، هذه الكتلة البادئة يسمح الجهاز للتغليف من نص من بين لغات الترميز الأخرى، أو حتى جسون في اللغات الأخرى الأصلي النمط الحرفي ودون الهروب من الاصطدام s. سيجيل
علاوةً على ذلك، والنقطة الأكثر بروزا من المقارنة هو أن YAML يوفر تخصيب الجملة التالية التي ليس لها مقابل في تعبيرات جسون:
علاوةً على ذلك، YAML كما تقدم أنواع البيانات الموسعة خارج الأوليات (امثله سلاسلstring، كسور، intsصحيحه، منطقيهbools) التي يمكن أن تشمل نوع فئة الإعلانات
Extensible:
http_request.send(null);
من جهة ثانية، علما بأن استخدام (XMLHttpRequest) في هذا المثال ليس عبر متصفح متوافق؛ الاختلافات النحوية غير متوفرة في للإنترنت إكسبلورر، أوبرا} ، وسفاري، وعلى متصفحات موزيلا. فائدة XMLHttpRequest محدودة بسبب سياسة المصدر نفسه: العنوان (URL)لكي يرد على الطلب يجب أن يتواجد في نفس المجال (DNS) مثل الخادم الذي يستضيف الصفحة التي تحتوي على الطلب. بدلا من ذلك، فإن النهج (JSONP) يشتمل على استخدام وظيفة رد الاتصال المشفرة مرت بين العميل والخادم للسماح العميل بتحميل بيانات جسون من مجالات الطرف الثالث، وإخطار وظيفة الطالب عند الانتهاء، على الرغم من أن هذا يفرض بعض المخاطر الأمنية ومتطلبات إضافية على الخادم.
في هذا الإطار، يمكن الفعال يمكن أن تستعمل كذلك لنقل البيانات جسون. مع هذا الأسلوب كان من الممكن أن يحصل كل ما حول نفس سياسه الاصل لكنه غير آمن. JSONRequest وقد اقترح كبديل أكثر أمانا.
علاوةً على ذلك، ويمكن كذلك استخدام عناصر المتصفحات لطلب بيانات جسون بشكل متزامن 1}في هجوم عبر متصفح أزياء، أو استخدام عادي وسهل للتقديمات هذه المقاربات كانت سائدة قبل مجيء تأييد واسع لXMLHttpRequest.
الكفاءة
كذلك، جسون تستعمل في المقام الأول لنقل البيانات عبر الإنترنت، ولكن له بعض الخصائص التي تحد من كفاءة لهذا الغرض. على وجه الخصوص، يجب أن يتم ذلك على فك حرف على أساس كل حرف، وليس له معيار الحكم لضغط البيانات، التدريبي للسلاسل، أو مراجع كائن.
كائن مراجع
مراجع
ومن ناحية أخرى، على وجه التحديد، وحدة dojox.json.ref يقدم الدعم لعدة أشكال من المراجع بما في ذلك التعميم، المتعدد، ادخال الرسالة، المراجع البطيئة
وفي هذا الصدد، معيار جسون لا يعتمد مراجع الكائن (objects refernces)، ولكن مجموعة الأدوات دوجو(DOJO) يوضح كيفية الاتفاقيات التي يمكن اعتمادها لدعم مثل هذه الإشارات باستخدام جسون القياسية.
الأم جسون
موزيلا فايرفوكس 3.5 +
وعلى صعيد آخر، متصفحات الويب اما ان تكون حديثه الآن أو قد تعمل على جسون الام من فك اوالتشفير الذي يزيل المشكلة الأمنية ل eval. جسون الأصلية عموما أسرع مقارنة مع مكتبات جافا سكريبت التي كان يشيع استخدامها من قبل. في يونيو / حزيران 2009 المتصفحات التالية لها، أو سيكون جسون الأصلي الداعم لها:
مايكروسوفت إنترنت إكسبلورر 8
- ياهو! واجهة المكتبة
- جي كويري
- دوجو الأدوات
- موتولز
- بالمقارنة مع غيرها من الأشكال
كذلك، ما لا يقل عن 4 مكتبات جافا سكريبت مشهوره متعهد بـ استخدام جسون الأصلية إذا كانت متاحة:
بكت ومقرها المتصفحات (eg. جوجل كروم، أبل سفاري)
646 555-4567
var p = eval("(" + contact + ")");
في هذا الإطار، يجب في بناء جمله الجافا سكريبت ان المتغير (contact) تكون ملفوفة بين قوسين لتجنب الغموض.
من جانب آخر، جسون JSON موزعه ومبنيه في صلب المتصفحات المتقدمة مثل فايرفوكس 3.5 وإنترنت اكسبلورر8.0
ومن ناحية أخرى، افترض أن النص الوارد أعلاه هو موجود في متغير (contact) من سلسلة (string) جافا سكريبت. منذ جسون JSON هي مجموعة فرعية من كائن التدوين الحرفي جافا سكريبت ; ويمكن للمرء ثم إعادة وصف الكائن object جون سميث مع eval :
طلب التزوير عبر الموقع
من جانب آخر، هذه ليست سوى مشكلة إذاترميز بيانات جسون يحتوي على المعلومات الحساسة التي يجب أن لا يتم الكشف عنها لطرف ثالث، وخادم يعتمد على المتصفح نفسه المنشأ سياسة لمنع وصول البيانات في حالة وجود طلب غير لائق. ليست هناك مشكلة إذا كان الخادم يحدد مدى ملاءمة هذا الطلب في حد ذاته، إلا أن وضع البيانات على السلك إذا كان هذا الطلب هو الصحيح. ملفات تعريف الارتباط في حد ذاتها ليست كافية لتحديد ما إذا كان طلب أذن. الاستخدام الحصري لالكوكيز يخضع لطلب عبر موقع التزوير.
وفي هذا السياق، من السذاجة نشر JSONP تخضع لطلب عبر موقع الهجمات التزوير (CSRF أو XSRF). لأن أتش تي أم أل لا يحترم نفسه منشأ السياسة في تطبيقات متصفح الإنترنت، صفحة الخبيثة يمكن طلب والحصول على البيانات جسون المنتمين إلى موقع آخر. وهذا سيسمح لجسون ترميز البيانات التي يتم تقييمها في سياق صفحة الخبيثة، وربما إفشاء كلمات السر أو غيرها من البيانات الحساسة إذا كان المستعمل بتسجيل الدخول إلى موقع آخر.
لا شئ
وفي هذا السياق، المثال التالي يوضح تمثيل جسون لكائن (Object) يصف شخصًا ما. الاوبجكت يحتوي على string(حقل من السلسلة)للاسم الأول واسم العائلة، يحتوي على كائن (object) يمثل عنوان الشخص، ويحتوي على قائمة array(مصفوفات) رقم الهاتف.
- {
- "firstName": "John",
- "lastName": "Smith",
- "address": {
- "streetAddress": "21 2nd Street",
- "city": "New York",
أنواع البيانات وبناء الجمل والأمثلة
- من أنواع جسون الأساسية هي:
- العدد (صحيحا، وحقيقيا، فواصل عشرية)
- .السلسلة (اليونيكود المزدوج مع الرمز المائل </>)
- .منطقية (صحيح أو خاطئ)
إضافةً إلى ذلك، . الكائنات Object) (مجموعة من القيم المزدوجة (ازواج)، مفصولة بفواصل ومغلقة بأقواس متعرجة)
علاوةً على ذلك، .المصفوفات Array (وهو مرتبة ترتيب تسلسلي للقيم مفصولة بفواصل ومغلقة بأقواس مربعة)
"state": "NY",
- "postalCode": "10021"
- },
- "phoneNumbers": [
- { "type": "home", "number": "212 555-1234" },
- { "type": "fax", "number": "646 555-4567" }
- ]
http_request.onreadystatechange = function {
- if (http_request.readyState == 4 && http_request.status == 200) {
- the_object = JSON.parse(http_request.responseText);
- }
- http_request = null;
- };
XML
وفي هذا السياق، إكس إم إلXML وكثيرا ما تستعمل لوصف البيانات المركبة وتسلسل الكائنات (objects) بروتوكولات XML المختلفة تستند إلى وجود لتمثيل نفس النوع من هياكل البيانات كما لنفس النوع من بيانات جسون لأغراض التبادل. ومع ذلك، إكس إم إل XML كونها عامة الغرض كلغة ترميزية، فهي عند بناء جملة أكثر تعقيدا وأكبر حجما من الملف جسون، والتي، في المقابل، تم تصميمه خصيصا لتبادل البيانات.
ومن جهة أخرى، كلا منهما تفتقر إلى آلية واضحة لتمثيل نوع بياناتالثنائية الكبيرة binary data مثل بيانات الصورة (على الرغم من البيانات الثنائية binary data يمكن ان تكون متسلسلة في كلتا الحالتين من خلال تطبيق ثنائي إلى النص لأغراض عامة إلى نظام ترميز النص). جسون يفتقر إلى المراجع، وهذه سمة أصلية من هذه التطبيقات، وليس له تدوين على أي معيار مماثل على المسار XPath.
JSONP
ومن ناحية أخرى، بما في ذلك السمات النصي من المواقع البعيدة تسمح للمواقع نائية لحقن أي محتوى في موقع على شبكة الإنترنت. إذا كانت تلك المواقع النائية من نقاط الضعف التي تسمح للحقن جافا سكريبت، ويمكن أن الموقع الأصلي يمكن أن تتأثر كذلك.
علاوةً على ذلك، JSONP أو «جسون مع حشوة» هو امتداد جسون فيه بادئة كما هو محدد مدخلات وسيطة من الكلمة نفسها. بادئة هذا التضخيم هو عادة اسم دالة رد، ولكن قد يكون كذلك تعيين متغير، بيانا إذا، أو أي حاله أخرى بيان بادئة جافاسكريبت الاقتراح الأصلي ويبدو أنه تم الإدلاء بها في بلوق MacPython في سنة 2005 ، ويستعمل في الوقت الحالي من قبل الكثير من تطبيقات الويب 2.0 مثل تطبيقات دوجو أدوات جوجل أدوات تطبيقات ، وخدمات الشبكة العالمية. مزيد من التمديدات هذا البروتوكول قد تم النظر في الحجج التي اقترحها مدخلات إضافية، مثلًا، هي حالة التي تدعمها S3DB خدمات الويب.
ومن ناحية أخرى، لأن JSONP يجعل من استخدام السمات النصي، وتدعو هي في جوهرها مفتوحة على العالم. لهذا السبب، قد يكون من الملائم JSONP لحمل البيانات الحساسة.
استخدام جسون في اياكس Ajax
- var the_object = {};
- var http_request = new XMLHttpRequest;
- http_request.open("GET", url, true);
وعلى صعيد آخر، شفرة جافا سكريبت التالية يبين كيف يمكن للعميل استخدام (XMLHttpRequest)لطلب كائن (object,) في تنسيق جسون من الخادم. (جذف البرمجة من جهه الخادم، بل لابد من تشكيل للرد على الطلبات على url مع سلسله منسقه من جسون.)
جافا سكريبت eval
ومن جهة أخرى، تقنية وحدة التقييم evalيخضع لنقاط ضعف أمنية إذا كانت البيانات وكامل بيئة جافا سكريبت ليست ضمن السيطرة على مصدر واحد موثوق به. إذا كانت البيانات هي في حد ذاتها غير موثوق بها، مثلًا، قد يكون عرضة للهجمات الخبيثة شفرة جافا سكريبت الحقن؛ ما لم يتم استخدام وسائل إضافية للتحقق من صحة البيانات الأولى. التعبيرات العادية تستعمل أحيانا لتنفيذ هذا الاختيار قبل استدعاء eval كذلك، مثل هذه الثقة من الانتهاكات تؤدي إلى احتمال إنشاء مواطن ضعف لسرقهالبيانات والتزوير والتوثيق، وغيرها من احتمال إساءة استخدام البيانات والموارد. اف ار سي FRC التي تعرف جسون يوحي باستخدام التعليمات البرمجية التالية للتحقق من صحة جسون eval'ing قبل ذلك (المتغير 'نص','text' هو مدخل جسون):
ومن ناحية أخرى، لأن جميع تنسيقات نصوص جسون كذلك دمج الجملة القانونية لاكواد الجافا سكريبت، وسيلة سهلة للبرنامج جافا سكريبت لتحليل جسون - تنسيق البيانات هو استخدام eval المدمج في وظيفة جافا سكريبت eval، والذي صمم لتقييم تعبيرات جافا سكريبتJavaScript. بدلا من استخدام جسون - محلل محددة، جافا سكريبت تترجم هي نفسهامستعمله execute بيانات جسون الأصلي لإنتاج كائنات (object)جافا سكريبت.
وفي السياق ذاته، var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
text.replace(/"(\\.|[^"\\])*"/g,))) &&
var p = JSON.parse(<contact);
إضافةً إلى ذلك، هناك عدة طرق للتحقق من هيكل وأنواع البيانات داخل كائن (objecT,)جسون، مثل مخطط إكس إم إل.XML مخطط جسون (JSON schema) هي مواصفات للشكل القائم لجسون لتحديد وتعريف الهيكل لبيانات جسون. مخطط جسون يتيح ويعطي عقد ل ماهي بيانات جسون المطلوبة لتحقيق تطبيق ما، وكيف يمكن تعديله، يشبه إلى حد كبير ماذا`يوفر ويعطي مخطط XML لXML. مخطط جسون (JSON schema)يهدف إلى توفير التحقق من صحة الوثائق، والسيطرة على التفاعل مع بيانات جسون. مخطط جسون (JSON schema) يقوم على مفاهيم من مخطط إكس إم إل (XML schema) (RelaxNG),(Kwalify)، ولكن المقصود منها أن تكون جسون هي الأساس، بحيث ان تكون بيانات جسون في شكل مخطط (schema) يمكن استخدامها للتحقق من صحه بيانات جسون، بنفس التسلسل / أدوات إلغاء التسلسل تستعمل لأجل المخطط والبيانات، وأنه يمكن أن يكون تقرير وصفي.
ومن ناحية أخرى، في المواصفات، و mime-type، النوع الذي سيتم استخدامه يجب أن يكون application/jsonrequest
مخطط جسون (JSON schema)
من جهة ثانية، والحقول p.PhoneNumber, p.address.city,p.firstName ثم يتم الوصول إليها.
وفي هذا السياق، بصفة عامة evel يجب أن تستعمل فقط لتحليل جسون JSONإذا كان مصدر تنسيق نص جسون موثوق به تماما، وتنفيذ تعليمات برمجية غيرموثوق بها أمر خطير. محللي جسون JSONالمتاحة لعملية مدخلات جسون أقل من مصادر موثوق بها. محلل جسون JSON سوف يعترف فقط بنص جسون JSON، ويرفض كافة البرامج النصية. في المتصفحات التي توفر الدعم لجسون الاصلي، جسون موزعي هي كذلك أسرع بكثير من وحدة التقييم evel. ومن المتوقع أن دعم جسون الأصلي سيتم إدراجها في التقرير المقبل ECMAScript القياسية.
القضايا الأمنية
من جهة ثانية، على الرغم من جسون يقصد به أن يكون تنسيق متسلسل للبيانات، والتصميم على مجموعة فرعية من لغة البرمجة جافا سكريبت هموما أمنية عدة. وسط هذه المخاوف بشأن استخدام مترجم جافا سكريبت الفعال لتنفيذ نص جسون بصيغته جافا سكريبت، مما يعرض البرنامج النصي لشاردة أو خطأوارد فيه، وكثيرا مايكون مصدر قلق كبير عند التعامل مع البيانات التي تم استردادها من الإنترنت. في حين ليست الوسيلة الوحيدة لعملية جسون، وهي تقنية سهلة وشعبية، نابعة من تصميم جسون JSON's لتكون متوافقة مع عمليه جافا سكريبت evel، ويتضح ذلك من اكواد ورموز الأمثلة التالية.
}
- ويعادل الممكنة لأعلاه في أكس أم ألXML يمكن أن يكون:
- 21 2nd Street
- New York
- NY
- 10021
- 212 555-1234
eval('(' + text + ')');
علاوةً على ذلك، وثمة وظيفة جديدة، parseJSON، وقد اقترح كبديل أكثر أمانا من eval، لأنها تهدف على وجه التحديد طريقة عمل بيانات جسون وليس جافا سكريبت. كان من المقرر إدراجها في الإصدار الرابع من معيار إي سي إم ايه سكريبت، على الرغم من أنه يتوفر الآن في مكتبة جافا سكريبت في http://www.JSON.org/json2.js وسيكون في الإصدار الخامسة من ECMAScript.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟