مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • إضافات
  • برمجة
  • تصميم
  • تطوير
  • فعاليات
  • كتب
  • لقاءات
  • مدونات عربية
  • مشاريع
  • مهمات
  • مواقع

ماهي JSON؟

September 30, 2008 - الثلاثاء 30 رمضان 1429 التصنيف: برمجة

ماهي 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.

شارك هذه التدوينة:
إضافة 'ماهي JSON؟' إلى Del.icio.usإضافة 'ماهي JSON؟' إلى diggإضافة 'ماهي JSON؟' إلى Technoratiإضافة 'ماهي JSON؟' إلى Stumble Uponإضافة 'ماهي JSON؟' إلى Google Bookmarksإضافة 'ماهي JSON؟' إلى FaceBookإضافة 'ماهي JSON؟' إلى MySpaceإضافة 'ماهي JSON؟' إلى Twitterإضافة 'ماهي JSON؟' إلى FriendFeed
الوسوم: تدوينات رمضان, نصائح
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • إضافة “الأكثر مشاهدة”
    • التعقيد
    • مستقبل الدروبال
    • فكر جيداً قبل أن تشتري
    • موضة CMS

11 تعليق في “ماهي JSON؟”

  1. Qinq: October 1, 2008 - الأربعاء 02 شوال 1429 في 1:04 ص

    “إلى كائن عن طريق تابع (دالة) eval:”
    eval === evil
    “التعامل مع XML يختلف من متصفح لآخر بينما JSON موحدة”
    العكس هو الصحيح ال Standarization فى ال XML احسن من ال JavaScript
    “أيضاً PHP5 تأتي معها مكتبة للتعامل مع JSON”
    وهناك ايضا عدد هاائل من مكتبات ال XML
    “مع بيانات كبيرة ومعقدة”
    لماذا ؟ ما الذى لا تستطيعه JSON و تستطيعه XML … أقول لك ال Standarization فى حاله ال XML هو already established أما فى حاله ال JSON ف ؟؟

    .. لم تعرض مشاكل ال Security فيها ..
    ولكنها ما تزال فكره جيده ولها جمهور محترم ومستخدمين


  2. خالد: October 1, 2008 - الأربعاء 02 شوال 1429 في 3:59 ص

    1- eval: مامشكلتك معها!
    2- التعامل مع JSON موحد بينما مع XML غير موحد وعانيت من هذا الأمر كثيراً، يعني مجربها.
    3- لم أتكلم بأن PHP لاتحوي مكاتب للتعامل مع XML؟!
    4- لم تأتي بحقائق! مجرد رأي شخصي!
    5- لم أتطرق لهذا الأمر من قبل لذلك لا أتكلم بما لا أعرف


  3. Ahmed Mahmoud: October 1, 2008 - الأربعاء 02 شوال 1429 في 12:58 م

    شكرا خالد في الحقيقة افادتني هذه المقاله و لو ارفقت مع المقال ملف ديمو بسيط لكيفية استدعاء بعض المعلومات المخزنة في ملف JSON و ليكن عن طريق البي اتش بي مثلا سيكون رائعا
    ايضا لم افهم ما تقوم به دالة eval
    اعذر قصور معلوماتي في هذا الشأن و شكرا لك و ننتظر منك موضوعات مثل هذه مستقبلا


  4. خالد: October 2, 2008 - الخميس 03 شوال 1429 في 12:58 ص

    eval يقوم بالكثير من الوظائف وباختصار تستطيع من خلاله إنشاء وتنفيذ الجافاسكربت.

    بالنسبة لل JSON مع PHP سأكتب عنه إن شاء الله قريباً


  5. فراس: October 2, 2008 - الخميس 03 شوال 1429 في 6:09 م

    شكراً لك خالد , مقالة مُفيدة و على فكرة زكرتني بالــ Structure in C++ .

    تحياتي
    فراس


  6. Qinq: October 4, 2008 - السبت 05 شوال 1429 في 10:37 م

    1) eval===evil
    هذه الداله واحد من اخطر المصايب والغريب يا اخى ان تضعها هكذا وتدافع عنها… انت تأخذ اشياء من العالم الخارجى المجنون وتمررها ل eval مباشرة وتقول لى ما المشكله !!؟
    2)اثبت. هات امثله كلامك غير عملى هناك فرق بين اختلاف طرق التعامل- وهو مفيد ويدل على الثراء- و التنوع واختلاف الصيغ … ال JSON مبينيه على كونها Js Compilant ولما كانت عمليه ال Standarization فى ال JS ليست فى احسن الاحوال فهى اسوا من ال XML من هذه الناحيه
    3) —
    4) سألتك سؤال ورددت عليه بأن كلامى شخصى… بالعكس رأيك انت أخى خالد هو الاقرب للذاتيه والشخصيه..رد على سؤالى واذكر التطبيقات


  7. خالد: October 4, 2008 - السبت 05 شوال 1429 في 11:08 م

    1- يا أخي أنت حكيت هالجملة فهات الدليل! ليس للتحدي ولكن لإثراء الموضوع فلا أحد فينا معصوم عن الخطأ. يعني أنا معلوماتي أنها لاتسبب مشاكل وأنت قلت العكس ففسر لنا كلامك.

    2- هوووووه شكلك مو متعامل مع XML في JS أبداً! أبسط مثال هو عملية تحميل الملف في IE وفي باقي المتصفحات:
    http://www.w3schools.com/Dom/dom_parser.asp
    ومن ثم تأتيك الاختلافات في DOM

    3- —- :)

    4- لم أفهم عليك قصدك؟ أعد السؤال لو سمحت.

    5- اذكر لنا المشاكل الأمنية لو سمحت حتى يصبح الموضوع جميلاً

    لاتغضب ولا على بالك … بس لاتبخل علينا بالمعلومات يعني اذكر ماتريده بالتفصيل الممل :)


  8. JSON و PHP | مدونة الويب 2.0: October 6, 2008 - الاثنين 07 شوال 1429 في 8:48 ص

    [...] التدوينة تلبية لطلب الأخ أحمد محمود عن شرح التعامل مع JSON في [...]


  9. sami2009: February 28, 2009 - السبت 04 ربيع الأول 1430 في 12:55 ص

    شيء جميل جدا

    شكرا لك ..


  10. أحمد ماهر: April 18, 2009 - السبت 23 ربيع الثاني 1430 في 5:10 م

    التعامل مع ال xml هو الأفضل بلا شك
    اما json فهي كغالب ال javascript غير متوافقة مع كل المتصفحات
    اما xml فهي دائما متوافقة مع كل شئ لغات البرمجة والمتصفحات


  11. خالد: April 18, 2009 - السبت 23 ربيع الثاني 1430 في 7:18 م

    لا يوجد أفضل هنا فالطريقتين معاريتين وبالعكس تماماً ال xml له مشاكله في IE بينما JSON تعمل تماماً على كافة المتصفحات وبشكل أسرع من XML لأنها وبكل بساطة مصفوفة.


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • أفضل الأدوات لرفع الملفات
  • تنظيم الوقت البرمجي
  • مقدمة في CakePHP
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • تصميم قاعدة البيانات
  • مواقع عربية بالدروبال
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار أمازون إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك اللغة العربية برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مشاريع مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • 2008-2012 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً

    Switch to our mobile site