JSON

By mostafa farghaly

السلام عليكم و رحمه الله تعالى و بركاته

json

JSON اختصار JavaScript Object Notation ، هى وسيله لنقل البيانات بين ال client و ال server سهل قرائتها و كتابتها من قبل المطور و سهل اعرابها و فهمها من قبل الاله ، Douglass crockford من Yahoo هو اول من اكتشف ان كائنات الجافاسكربت يمكن انتقالها بين الزبون و الخادم و تم استخدامها فى تطبيقات الياهو اول مره ، ثم الان انتشر إستخدامها فستجدها فى معظم ال api التى يقدمه اى موقع غالبا ، و بالمناسبه اذا قمت بفحص تطبيق ال gmail عن طريق FireBug ستجد ان كل الرسائل و هيكلها عباره عن رسائل JSON ، اذا كيف يبدو ال JSON هذا ؟

{name:"Mostafa",age:21} // JSON [object literal ]
[mostafa,21] // JSON [ Array ]
"mostafa,21" // JSON [ String ]
true // JSON [ Boolean ]
false // JSON [ Boolean ]
1652332.584 // JSON [ Number ]
null // JSON

يقوم السيرفر بإرسال اى صيغه من صيغ ال JSON إلى المتصفح التى غالبا ماتكون object literral ، كما يوضح المثال البسيط التالى :

<?php
// josn.php
echo "{name:'mostafa',age:21,langs:['JavaScript','PHP',XML]}";
?>

يقوم السيرفر بإرسال الكائن التالى فى صوره نص :

{
name:'mostafa',
age:21,
langs:[
         'javascript',
         'PHP',
         'XML'
        ]
}

تقوم الجافاسكربت فى المتصفح بطلب البيانات عن طريق الاجاكس و إعراب الكائن كما يلى و تستخلص البيانات منه عن طريق eval كما يوضح المثال التالى :

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){
        if(xhr.status == 200 || xhr.status == 304){
            var JSON = eval("("+xhr.responseText+")");
            alert(JSON.name); // mostafa
            alert(JSON.age); // 21
            alert(JSON.langs[0]); // JavaScript
        }
    }
}
xhr.open("GET","json.php",true);
xhr.send(null);

استخلاص البيانات عن طريق eval من JSON ، اسهل بكثير من استخلاص البيانات من XML عن طريق DOM .

يوجد حاليا مكاتب شامله معظم اللغات للتعامل مع JSON من بيئه السيرفر و غيرها ، لإنشاء كائنات JSON و إعرابها و فحصها ، للمزيد :
JSON.org يوجد به صفحه عربيه .

الأوسمة: ,

10 تعليقات إلى “JSON”

  1. روابط سريعة « احمد عربي يقول:

    [...] الخميس-02-2009 عن تقنية JSON والتى استخدمها دائما مع Ajax فهى وسيلة التواص… [...]

  2. almhajer يقول:

    تسلم اناملك على المقالة شكل دوغلاس مهوس كائنات فقام يبحث عنها في كل مكان

  3. PHP0 يقول:

    مشكور على هذه المقالة
    لكن لي استفسار حول JSon واللغة العربية

    كيف يتم عرض اللغة العربية مع اني حاولت لكن فشكلت وشكرا

  4. almhajer يقول:

    اسعد الله اوقاتك
    اتمنى ان تشرح خطوات ال CSS selector بالتفصيل الممل
    وبخاصة (“a[@id^='myid']“);
    شاكرا لك مجهودك اريد اعمل سليكتور خاص بس بدي اشوف افكارك واستفيد من خبرتك
    ولك خالص الامنيات بالتوفيق

  5. mostafa farghaly يقول:

    @PHP0 : لا توجد اى مشكله مع اللغه العربيه لأن الجافاسكربت تدعم unicode ، انا قمت بإستبدال جميع القيم فى المثال السابق باللغه العربيه ، و عمل المثال بشكل صحيح .

    @almhajer : كما ذكرت لك من قبل أنا انتظر كتاب Manning: Javascript ninja ، يفصل فيه جون ريسج كيفيه عمل selector engine ، بالرغم من ذلك يمكننى عمل واحد ، لكنى لا اهتم بمثل ذلك ، لأن AIR يدعم document.querySelectorAll التى تقبل CSS3 و تجلب العناصر المقابله ، يمكننى كتابه selector engine لكن لن يكون generic لأنى ليست لى تجربه مع هذه المحركات من قبل ، سأبدأ أولا بعمل RegExp يجلب قيم tagName و attribute و value و operator فى المثال الذى كتبته انت ، ثم من خلال ال DOM اكتب logic مناسب يقوم بجلب تلك القيم ، أنا لا احاول اختراع العجله من جديد ، احاول البحث والتركيز فى بيئه مثل AIR جافاسكربت الديسكتوب ، او بيئه مثل Jaxer جافاسكربت السيرفر .

  6. PHP0 يقول:

    بصراحة انا من الناس اللذين يحبون مكتبة Extjs
    واعمل عليها وعلى سيرتها تمنيت في لو منتدى يتكلم عنها لكن لايوج

    اما عن استفساري عن JSON
    اقصد مع PHP لاني حاولت لكن لاتضهر لدي بالعربي
    ياريت في مثال جاهز اوكامل منك واكون شاكر لك
    لانو مكتبة Extjs تعتمد عليها فاضررتالى استخدام XML

  7. mostafa farghaly يقول:

    @php0 : كنت استخدام ext منذ فتره فقط لكى اتعلمها ، لكنى توقفت بسبب عده اسباب ، مشاكلها مع اليمين لليسار ، و عدم امكانيه استخدامها فى مشاريع تجاريه إلا بعد شراء ترخيص ، بالرغم من ذلك لا يوجد اى إطار يضاهيها فى عناصر واجهه المستخدم ، لذلك لا تتوقع منى اى دروس عن ext ، بالمناسبه هناك كتاب صدر من دار نشر packet عن ext ، و التوثيق بالموقع شامل كل شىء لن تحتاج لموقع عربى .

    اما بالنسبه للعربيه مع JSON فأنا كما رديت من قبل ، لا توجد مشكله ، استبدل القيم فى المثال اللى بالموضوع بقيم عربيه و جربها ، سيعمل المثال 100% .

  8. almhajer يقول:

    شكرا جزيلا اخ مصطفى ويعطيك العافية على جهودك
    وبارك الله فيك اعتقد انك ستتحول وبرايي الى adobe air الله بيوفقك وشكرا جزيلا

  9. majedimos يقول:

    أخي الفاضل
    عند تنزيلي لويندوز جديد أخطأت بنقل بيانا المفضله في الفاير فوكس من الداتا على السي بعد انهيار النظام
    فجاءت المفضله بامتداد .json
    كيف يمكن لي استردادها للفاير فوكس

    • mostafa farghaly يقول:

      انا اسف يا ماجد لم تقابلنى هذه المشكله من قبل ، و لا اأعرف كيف حلها

اترك رد