ماهي JSON؟
ماهي JSON؟
اختصار لـ (Javascript Object Notation) وهي تنسيق لتخزين المعلومات بطريقة خفيفة وسهلة، JSON تأتي بالأساس مع Javascript وبالإمكان أيضاً التعامل معها من لغات غيرها، وتعتبر منافساً حقيقياً للـ XML وخصوصاً عند استخدام Ajax.
هل هي أفضل من XML؟
تعتبر أفضل منه لعدة أسباب، التعامل مع XML يختلف من متصفح لآخر بينما JSON موحدة. بنية JSON تسمح لها بتخزين المعلومات بحجم أقل بكثير من XML أي في XML يوجد هدر فهناك الكثير من الوسوم أما JSON فلا يوجد هدر، وتريحك أيضاً من التعامل مع DOM في XML. أيضاً تحليل XML يستهلك ذاكرة أكثر من تحليل JSON. أيضاً PHP5 تأتي معها مكتبة للتعامل مع JSON !
كيف نستخدمها؟
أولاً لمحة سريعة عن أنواع المصفوفات في JavaScrpit:
النوع الأول:
var myComputer = ["keyboard", "mouse", "screen"];
في هذا النوع يتم توليد دليل المصفوفة (0, 1, 2) بشكل تلقائي لأننا استخدمنا []،شاهد كيف يتم استعراضها:
alert(myComputer[0]); // alerts keyboard alert(myComputer[1]); // alerts mouse alert(myComputer[2]); // alerts screen
النوع الثاني:
var myName = {
"firstName": "Khaled",
"lastName": "Al Hourani"
};
هنا نحن وضعنا دليل المصفوفة وميزنا المصفوفة بالأقواس {}، وعند عرضهم:
alert(myName['firstName']); // alerts Khaled alert(myName['lastName']); // alerts Al Hourani
بعد هذه الجولة السريعة في مصفوفات الجافاسكربت سنجد أن تنسيق JSON بسيط جداً، شاهد هذا المثال:
var myComputer = [ "keyboard", "mouse", "screen" ]
إنها عبارة عن مصفوفات! وكما في المثال الذي ذكرناه سيتم توليد الدليل تلقائياً:
alert(myComputer[0]); // alerts keyboard alert(myComputer[1]); // alerts mouse alert(myComputer[2]); // alerts screen
ومثال آخر:
var myName = [ "firstName": "Khaled", "lastName": "Al Hourani" ]
وعند عرض النتائج يجب أن نكتب الدليل:
alert(myName['firstName']); // alerts Khaled alert(myName['lastName']); // alerts Al Hourani
وأيضاً مثال معقد قليلاً:
var myInfo =
{
"firstName": "Khaled",
"lastName": "Al Hourani",
"address": {
"streetAddress": "11 Street",
"city": "Damascus",
"country": "Syria"
},
"phoneNumbers": [
"+963-955-153205",
"+963-11-212910",
]
}
نعرف كيف يمكننا عرض المعلومات كمصفوفة، ولكن الهدف من JSON هو التعامل معهم ككائن (object)، لذلك سنقوم بتحويل هذه المصفوفة إلى كائن عن طريق تابع (دالة) eval:
var p = eval(myInfo); alert(p.firstName); alert(p.phoneNumbers[0]);
ماهي سيئة JSON؟
بما أنها بسيطة فهي ليست مفضلة عند التعامل مع بيانات كبيرة ومعقدة، الأفضل هنا هو استخدام XML.












“إلى كائن عن طريق تابع (دالة) eval:”
eval === evil
“التعامل مع XML يختلف من متصفح لآخر بينما JSON موحدة”
العكس هو الصحيح ال Standarization فى ال XML احسن من ال JavaScript
“أيضاً PHP5 تأتي معها مكتبة للتعامل مع JSON”
وهناك ايضا عدد هاائل من مكتبات ال XML
“مع بيانات كبيرة ومعقدة”
لماذا ؟ ما الذى لا تستطيعه JSON و تستطيعه XML … أقول لك ال Standarization فى حاله ال XML هو already established أما فى حاله ال JSON ف ؟؟
.. لم تعرض مشاكل ال Security فيها ..
ولكنها ما تزال فكره جيده ولها جمهور محترم ومستخدمين
1- eval: مامشكلتك معها!
2- التعامل مع JSON موحد بينما مع XML غير موحد وعانيت من هذا الأمر كثيراً، يعني مجربها.
3- لم أتكلم بأن PHP لاتحوي مكاتب للتعامل مع XML؟!
4- لم تأتي بحقائق! مجرد رأي شخصي!
5- لم أتطرق لهذا الأمر من قبل لذلك لا أتكلم بما لا أعرف
شكرا خالد في الحقيقة افادتني هذه المقاله و لو ارفقت مع المقال ملف ديمو بسيط لكيفية استدعاء بعض المعلومات المخزنة في ملف JSON و ليكن عن طريق البي اتش بي مثلا سيكون رائعا
ايضا لم افهم ما تقوم به دالة eval
اعذر قصور معلوماتي في هذا الشأن و شكرا لك و ننتظر منك موضوعات مثل هذه مستقبلا
eval يقوم بالكثير من الوظائف وباختصار تستطيع من خلاله إنشاء وتنفيذ الجافاسكربت.
بالنسبة لل JSON مع PHP سأكتب عنه إن شاء الله قريباً
شكراً لك خالد , مقالة مُفيدة و على فكرة زكرتني بالــ Structure in C++ .
تحياتي
فراس
1) eval===evil
هذه الداله واحد من اخطر المصايب والغريب يا اخى ان تضعها هكذا وتدافع عنها… انت تأخذ اشياء من العالم الخارجى المجنون وتمررها ل eval مباشرة وتقول لى ما المشكله !!؟
2)اثبت. هات امثله كلامك غير عملى هناك فرق بين اختلاف طرق التعامل- وهو مفيد ويدل على الثراء- و التنوع واختلاف الصيغ … ال JSON مبينيه على كونها Js Compilant ولما كانت عمليه ال Standarization فى ال JS ليست فى احسن الاحوال فهى اسوا من ال XML من هذه الناحيه
3) —
4) سألتك سؤال ورددت عليه بأن كلامى شخصى… بالعكس رأيك انت أخى خالد هو الاقرب للذاتيه والشخصيه..رد على سؤالى واذكر التطبيقات
1- يا أخي أنت حكيت هالجملة فهات الدليل! ليس للتحدي ولكن لإثراء الموضوع فلا أحد فينا معصوم عن الخطأ. يعني أنا معلوماتي أنها لاتسبب مشاكل وأنت قلت العكس ففسر لنا كلامك.
2- هوووووه شكلك مو متعامل مع XML في JS أبداً! أبسط مثال هو عملية تحميل الملف في IE وفي باقي المتصفحات:
http://www.w3schools.com/Dom/dom_parser.asp
ومن ثم تأتيك الاختلافات في DOM
3- —-
4- لم أفهم عليك قصدك؟ أعد السؤال لو سمحت.
5- اذكر لنا المشاكل الأمنية لو سمحت حتى يصبح الموضوع جميلاً
لاتغضب ولا على بالك … بس لاتبخل علينا بالمعلومات يعني اذكر ماتريده بالتفصيل الممل
[...] التدوينة تلبية لطلب الأخ أحمد محمود عن شرح التعامل مع JSON في [...]
شيء جميل جدا
شكرا لك ..
التعامل مع ال xml هو الأفضل بلا شك
اما json فهي كغالب ال javascript غير متوافقة مع كل المتصفحات
اما xml فهي دائما متوافقة مع كل شئ لغات البرمجة والمتصفحات
لا يوجد أفضل هنا فالطريقتين معاريتين وبالعكس تماماً ال xml له مشاكله في IE بينما JSON تعمل تماماً على كافة المتصفحات وبشكل أسرع من XML لأنها وبكل بساطة مصفوفة.