لغة جيسون. جيسون: الأساسيات
بالتأكيد سمعت عن JSON. ما هذا؟ ماذا يمكن أن يفعل وكيفية استخدامه؟
سنغطي في هذا البرنامج التعليمي أساسيات JSON ونغطي النقاط التالية:
- ما هو جسون؟
- ما هو استخدام JSON؟
- كيفية إنشاء سلسلة JSON؟
- مثال بسيط لسلسلة JSON.
- دعونا نقارن JSON وXML.
- كيفية العمل مع JSON في JavaScript وPHP؟
JSON هي طريقة بسيطة تعتمد على النص لتخزين البيانات المنظمة ونقلها. باستخدام بناء جملة بسيط، يمكنك بسهولة تخزين أي شيء بدءًا من رقم واحد وحتى السلاسل والمصفوفات والكائنات في نص عادي. يمكنك أيضًا ربط المصفوفات والكائنات معًا لإنشاء بنيات بيانات معقدة.
بمجرد إنشاء سلسلة JSON، يكون من السهل إرسالها إلى تطبيق آخر أو إلى موقع آخر على الشبكة لأنها نص عادي.
يتمتع JSON بالمزايا التالية:
- انها مدمجة.
- جملها سهلة القراءة والتأليف من قبل كل من البشر وأجهزة الكمبيوتر.
- يمكن تحويلها بسهولة إلى بنية بيانات لمعظم لغات البرمجة (الأرقام، السلاسل، القيم المنطقية، المصفوفات، إلخ)
- تحتوي العديد من لغات البرمجة على وظائف ومكتبات لقراءة وإنشاء هياكل JSON.
يرمز الاسم JSON إلى JavaScript Object Notation. كما يوحي الاسم، فهو يعتمد على طريقة تعريف الكائنات (مثل إنشاء المصفوفات الترابطية في اللغات الأخرى) والمصفوفات.
ما هو استخدام JSON؟الاستخدام الأكثر شيوعًا لـ JSON هو إرسال البيانات من الخادم إلى المتصفح. عادةً، يتم تسليم بيانات JSON باستخدام AJAX، مما يسمح للمتصفح والخادم بالتواصل دون الحاجة إلى إعادة تحميل الصفحة.
يمكنك أيضًا استخدام JSON لإرسال البيانات من المتصفح إلى الخادم عن طريق تمرير سلسلة JSON كمعلمة لطلبات GET أو POST. لكن هذه الطريقة أقل شيوعًا، حيث يمكن تبسيط نقل البيانات من خلال طلبات AJAX. على سبيل المثال، قد يتم تضمين معرف المنتج في عنوان URL كجزء من طلب GET.
تحتوي مكتبة jQuery على عدة طرق، مثل getJSON() وparseJSON()، التي تسهل استرداد البيانات باستخدام JSON من خلال طلبات AJAX.
كيفية إنشاء سلسلة JSON؟هناك بعض القواعد الأساسية لإنشاء سلسلة JSON:
- تحتوي سلسلة JSON إما على مصفوفة من القيم أو كائن (مصفوفة ترابطية من أزواج الاسم/القيمة).
- مجموعة مصفوفةمحاطة بين قوسين مربعين ([ و ]) وتحتوي على قائمة قيم مفصولة بفواصل.
- شيءمحاط بأقواس متعرجة (( و )) ويحتوي على قائمة مفصولة بفواصل لأزواج الأسماء/القيم.
- زوج الاسم/القيمةيتكون من اسم الحقل المحاط بعلامات اقتباس مزدوجة، متبوعًا بنقطتين (:) وقيمة الحقل.
- معنىفي صفيف أو كائن يمكن أن يكون هناك:
- الرقم (عدد صحيح أو نقطة عائمة)
- سلسلة (في علامات الاقتباس المزدوجة)
- القيمة المنطقية (صواب أو خطأ)
- مصفوفة أخرى (محاطة بين قوسين مربعين)
- كائن آخر (محاط بأقواس متعرجة)
- قيمة فارغة
لتضمين علامات الاقتباس المزدوجة في سلسلة، تحتاج إلى استخدام شرطة مائلة عكسية: \" . كما هو الحال مع العديد من لغات البرمجة، يمكنك وضع أحرف التحكم والرموز السداسية في سلسلة عن طريق يسبقها بشرطة مائلة عكسية. راجع موقع JSON للحصول على التفاصيل.
مثال بسيط لسلسلة JSONفيما يلي مثال للطلب بتنسيق JSON:
( "معرف الطلب": 12345، "اسم المتسوق": "فانيا إيفانوف"، "البريد الإلكتروني للمتسوق": " [البريد الإلكتروني محمي]"، "المحتويات": [( "معرف المنتج": 34، "اسم المنتج": "المنتج المتميز"، "الكمية": 1)، ( "معرف المنتج": 56، "اسم المنتج": "المنتج المعجزة"، "الكمية": 3 ) ], "اكتمل الطلب": صحيح )
دعونا نلقي نظرة على السطر بالتفصيل:
- نقوم بإنشاء كائن باستخدام الأقواس المتعرجة (( و )).
- يحتوي الكائن على عدة أزواج من الاسم/القيمة: "معرف الطلب": 12345 خاصية بالاسم "معرف الطلب" وقيمة عددية 12345 "shopperName": "Vanya Ivanov" خاصية بالاسم "shopperName" وقيمة السلسلة "Vanya Ivanov" " "البريد الإلكتروني للمتسوق": " [البريد الإلكتروني محمي]"خاصية باسم "shopperEmail" بقيمة سلسلة " [البريد الإلكتروني محمي]" "المحتويات": [ ... ] خاصية تسمى "المحتويات" وقيمتها عبارة عن مصفوفة "orderCompleted": صحيح خاصية تسمى "orderCompleted" والقيمة المنطقية صحيحة
- يوجد كائنان في مصفوفة "المحتويات" يمثلان عناصر فردية بالترتيب. يحتوي كل كائن على ثلاث خصائص: ProductID وproductName والكمية.
بالمناسبة، نظرًا لأن JSON يعتمد على الإعلان عن كائنات JavaScript، يمكنك بسرعة وسهولة جعل سلسلة JSON أعلاه كائن JavaScript:
var cart = ( "معرف الطلب": 12345، "اسم المتسوق": "فانيا إيفانوف"، "البريد الإلكتروني للمتسوق": " [البريد الإلكتروني محمي]"، "المحتويات": [( "معرف المنتج": 34، "اسم المنتج": "المنتج المتميز"، "الكمية": 1)، ( "معرف المنتج": 56، "اسم المنتج": "المنتج المعجزة"، "الكمية": 3 ) ], "اكتمل الطلب": صحيح );
مقارنة JSON وXMLمن نواحٍ عديدة، يمكنك التفكير في JSON كبديل لـ XML، على الأقل في مجال تطبيقات الويب. يعتمد مفهوم AJAX في الأصل على استخدام XML لنقل البيانات بين الخادم والمتصفح. لكن في السنوات الأخيرة، أصبحت JSON شائعة بشكل متزايد في نقل بيانات AJAX.
على الرغم من أن XML هي تقنية مجربة يتم استخدامها في عدد لا بأس به من التطبيقات، إلا أن JSON يتمتع بميزة كونه تنسيق بيانات أكثر إحكاما وأسهل في التعرف عليه.
هذا هو الشكل الذي سيبدو عليه كائن المثال أعلاه في XML:
معرف الطلب 12345 اسم المتسوق فانيا إيفانوف المتسوق البريد الإلكتروني [البريد الإلكتروني محمي]محتويات المنتج رقم المنتج 34 اسم المنتج كمية المنتج الفائق 1 رقم المنتج 56 اسم المنتج كمية المنتج المعجزة 3 الطلب مكتمل صحيح
إصدار XML أكبر بكثير. في الواقع، يبلغ طوله 1128 حرفًا، بينما يبلغ طول إصدار JSON 323 حرفًا فقط. من الصعب أيضًا فهم إصدار XML.
وبطبيعة الحال، هذا مثال جذري. ومن الممكن إنشاء سجل XML أكثر إحكاما. ولكن حتى أنها ستكون أطول بكثير من مكافئ JSON.
العمل مع سلسلة JSON في JavaScriptيحتوي JSON على تنسيق بسيط، ولكن إنشاء سلسلة JSON يدويًا يعد أمرًا شاقًا للغاية. بالإضافة إلى ذلك، غالبًا ما تحتاج إلى أخذ سلسلة JSON وتحويل محتوياتها إلى متغير يمكن استخدامه في التعليمات البرمجية.
تحتوي معظم لغات البرمجة على أدوات لتحويل المتغيرات بسهولة إلى سلاسل JSON والعكس صحيح.
إنشاء سلسلة JSON من متغيرتحتوي JavaScript على طريقة JSON.stringify() مدمجة تأخذ متغيرًا وترجع سلسلة JSON تمثل محتوياته. على سبيل المثال، لنقم بإنشاء كائن JavaScript يحتوي على معلومات الطلب من مثالنا، ثم نقوم بإنشاء سلسلة JSON منه:
var cart = ( "معرف الطلب": 12345، "اسم المتسوق": "فانيا إيفانوف"، "البريد الإلكتروني للمتسوق": " [البريد الإلكتروني محمي]"، "المحتويات": [( "معرف المنتج": 34، "اسم المنتج": "المنتج المتميز"، "الكمية": 1)، ( "معرف المنتج": 56، "اسم المنتج": "المنتج المعجزة"، "الكمية": 3 ) ], "orderCompleted": true );
سوف ينتج هذا الكود:
لاحظ أن الأسلوب JSON.stringify() يُرجع سلسلة JSON بدون مسافات. من الصعب قراءتها، ولكنها أكثر إحكاما للنقل عبر الشبكة.
هناك عدة طرق لتحليل سلسلة JSON في JavaScript، ولكن الأكثر أمانًا والأكثر موثوقية هو استخدام طريقة JSON.parse() المضمنة. يتلقى سلسلة JSON ويعيد كائن JavaScript أو مصفوفة تحتوي على البيانات. على سبيل المثال:
var jsonString = " \ ( \ "معرف الطلب": 12345، \ "shopperName": "Vanya Ivanov"، \ "shopperEmail": " [البريد الإلكتروني محمي]"، \ "المحتويات": [ \ ( \ "معرف المنتج": 34، \ "اسم المنتج": "المنتج الفائق"، \ "الكمية": 1 \)، \ ( \ "معرف المنتج": 56، \ "اسم المنتج": "السلع المعجزة"، \"الكمية": 3\ ) \ ]، \"اكتمل الطلب": صحيح \ ) \"; فار العربة = JSON.parse(jsonString); تنبيه (cart.shopperEmail)؛ تنبيه (cart.contents.productName)؛
لقد أنشأنا متغير jsonString يحتوي على سلسلة JSON لترتيب المثال الخاص بنا. نقوم بعد ذلك بتمرير هذه السلسلة إلى الأسلوب JSON.parse()، الذي يقوم بإنشاء كائن يحتوي على بيانات JSON ويخزنها في متغير سلة التسوق. كل ما تبقى هو التحقق من خلال عرض خصائص كائن shopperEmail واسم المنتج الخاص بمصفوفة المحتويات.
ونتيجة لذلك، سوف نحصل على الإخراج التالي:
في تطبيق حقيقي، ستتلقى تعليمات JavaScript البرمجية الترتيب كسلسلة JSON في استجابة AJAX من البرنامج النصي للخادم، وتمرير السلسلة إلى طريقة JSON.parse()، ثم استخدام البيانات لعرضها على صفحة المستخدم.
يتمتع كل من JSON.stringify() وJSON.parse() بإمكانيات أخرى، مثل استخدام وظائف رد الاتصال لتحويل بيانات معينة بشكل مخصص. تعتبر هذه الخيارات مفيدة جدًا لتحويل البيانات المتنوعة إلى كائنات JavaScript مناسبة.
العمل مع سلسلة JSON في PHPPHP، مثل JavaScript، لديها وظائف مدمجة للعمل مع سلاسل JSON.
إنشاء سلسلة JSON من متغير PHPتأخذ الدالة json_encode() متغير PHP وتقوم بإرجاع سلسلة JSON تمثل محتويات المتغير. فيما يلي مثال الطلب الخاص بنا، مكتوبًا بلغة PHP:
يُرجع هذا الرمز نفس سلسلة JSON تمامًا كما في مثال JavaScript:
("معرف الطلب":12345،"shopperName": "فانيا إيفانوف"، "shopperEmail": " [البريد الإلكتروني محمي]"،"contents":[("productID":34,"productName":"المنتج الفائق"،"quantity":1),("productID":56,"productName":"منتج معجزة"،"quantity": 3)]"اكتمل الطلب":صحيح)
في تطبيق حقيقي، سيرسل برنامج PHP النصي سلسلة JSON هذه كجزء من استجابة AJAX إلى المتصفح، حيث سيقوم كود JavaScript، باستخدام طريقة JSON.parse()، بتحليلها مرة أخرى إلى متغير لعرضه على صفحة المستخدم .
يمكنك تمرير إشارات مختلفة كوسيطة ثانية للدالة json_encode(). بمساعدتهم، يمكنك تغيير مبادئ تشفير محتويات المتغيرات إلى سلسلة JSON.
قم بإنشاء متغير من سلسلة JSONلتحويل سلسلة JSON إلى متغير PHP، استخدم طريقة json_decode(). لنستبدل مثالنا لـ JavaScript بطريقة JSON.parse() بكود PHP:
كما هو الحال مع جافا سكريبت، سوف ينتج عن هذا الكود ما يلي:
[البريد الإلكتروني محمي]منتج معجزة
بشكل افتراضي، تقوم الدالة json_decode() بإرجاع كائنات JSON ككائنات PHP. توجد كائنات PHP عامة من فئة stdClass. ولهذا السبب نستخدم -> للوصول إلى خصائص الكائن في المثال أعلاه.
إذا كنت بحاجة إلى كائن JSON كمصفوفة PHP مرتبطة، فستحتاج إلى تمرير true باعتباره الوسيط الثاني للدالة json_decode(). على سبيل المثال:
$cart = json_decode($jsonString, true); صدى $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
سينتج عن هذا الكود نفس المخرجات:
[البريد الإلكتروني محمي]منتج معجزة
يمكنك أيضًا تمرير وسائط أخرى إلى الدالة json_decode() لتحديد عمق العودية وكيفية التعامل مع الأعداد الصحيحة الكبيرة.
خاتمةعلى الرغم من سهولة فهم واستخدام JSON، إلا أنها أداة مفيدة ومرنة للغاية لنقل البيانات بين التطبيقات وأجهزة الكمبيوتر، خاصة عند استخدام AJAX. إذا كنت تخطط لتطوير تطبيق AJAX، فلا شك أن JSON ستصبح أداة أساسية في ورشة العمل الخاصة بك.
ما هو JSON وماذا يمكن أن يفعل؟ ستتعلم في هذه المقالة كيفية استخدام JSON للعمل مع البيانات بسهولة. سننظر أيضًا في كيفية العمل مع JSON باستخدام PHP وJavaScript.
إذا قمت بتطوير مواقع ويب أو تطبيقات ويب بشكل عام، فمن المحتمل أنك سمعت عن JSON، على الأقل بشكل عابر. ولكن ماذا يعني JSON بالضبط؟ ما الذي يمكن أن يفعله تنسيق البيانات هذا وكيف يمكن استخدامه؟
في هذه المقالة سوف نتعلم أساسيات العمل بتنسيق json. وسنتابع المواضيع التالية:
- ما هو تنسيق JSON؟
- كيفية إنشاء سلاسل JSON؟
- مثال بسيط لبيانات JSON
- مقارنة JSON مع XML
لنبدأ!
ما هو تنسيق JSON؟JSON هي طريقة بسيطة تعتمد على النص لتخزين البيانات المنظمة ونقلها. باستخدام بناء جملة بسيط، يمكنك بسهولة تخزين كل من الأرقام والسلاسل البسيطة، بالإضافة إلى المصفوفات والكائنات، باستخدام النص فقط. يمكنك أيضًا ربط الكائنات والمصفوفات، مما يسمح لك بإنشاء هياكل بيانات معقدة.
بمجرد إنشاء سلسلة JSON، يمكن إرسالها بسهولة إلى أي تطبيق أو كمبيوتر لأنها مجرد نص.
تتمتع JSON بالعديد من المزايا:
- انها مدمجة
- إنه قابل للقراءة من قبل الإنسان وسهل القراءة بواسطة أجهزة الكمبيوتر
- يمكن تحويلها بسهولة إلى تنسيقات برمجية: القيم الرقمية، والسلاسل، والتنسيق المنطقي، والقيمة الخالية، والمصفوفات، والمصفوفات الترابطية.
- تحتوي جميع لغات البرمجة تقريبًا على وظائف تسمح لك بقراءة وإنشاء تنسيق بيانات json.
حرفيًا، يشير الاختصار JSON إلى JavaScript Object Notation. كما هو موضح سابقًا، يعتمد هذا التنسيق على إنشاء كائنات، وهو شيء مشابه للمصفوفات الترابطية في لغات البرمجة الأخرى.
ما هي الأغراض التي يتم استخدام JSON لها؟الأهم من ذلك كله، يتم استخدام json لتبادل البيانات بين جافا سكريبت وجانب الخادم (php). وبعبارة أخرى، لتكنولوجيا اياكس. يعد هذا مناسبًا جدًا عند تمرير متغيرات متعددة أو صفائف بيانات كاملة.
إليك ما يبدو في المثال:
هذه هي الطريقة التي يتم بها تكبير الصورة دون إعادة تحميل الصفحة في المتصفح. يعد هذا مناسبًا جدًا عندما نحتاج إلى تلقي بيانات جزئية، أو نقل كمية صغيرة من المعلومات إلى الخادم.
يحتوي jQuery المفضل لدى الجميع على وظائف getJSON() وparseJSON()، والتي تساعدك على العمل مع التنسيق من خلال طلبات ajax.
كيفية إنشاء سلاسل JSON؟فيما يلي القواعد الأساسية لإنشاء سلاسل JSON:
- تحتوي سلسلة JSON على مصفوفة من القيم وكائن (مصفوفة ترابطية مع أزواج الاسم/القيمة).
- يجب أن يكون المصفوفة ملفوفة بين قوسين مربعين، [ و ]، ويمكن أن تحتوي على قائمة من القيم المفصولة بفاصلة.
- يتم تغليف الكائنات باستخدام أذرع متعرجة، ( و )، وتحتوي أيضًا على أزواج اسم/قيمة مفصولة بفاصلة.
- تتكون أزواج الاسم/القيمة من اسم الحقل (بين علامتي اقتباس مزدوجتين) متبوعًا بنقطتين (:) متبوعتين بقيمة الحقل.
- يمكن أن تكون القيم الموجودة في المصفوفة أو الكائن:
- رقمي (عدد صحيح أو جزء منقط)
- سلاسل (ملفوفة بين علامتي اقتباس مزدوجتين)
- منطقية (صواب أو خطأ)
- صفائف أخرى (محاطة بين قوسين مربعين [و])
- أشياء أخرى (ملفوفة بأذرع مجعدة ( و ))
- قيمة فارغة
مهم! إذا كنت تستخدم علامات الاقتباس المزدوجة في القيم، فاحذفها باستخدام شرطة مائلة عكسية: \". يمكنك أيضًا استخدام الأحرف ذات الترميز السداسي، تمامًا كما تفعل في لغات البرمجة الأخرى.
مثال بسيط لبيانات JSONيوضح المثال التالي كيف يمكنك حفظ البيانات في "عربة التسوق" الخاصة بمتجر عبر الإنترنت باستخدام تنسيق JSON:
("معرف الطلب": 12345، "اسم المتسوق": "جون سميث"، "البريد الإلكتروني للمتسوق": " [البريد الإلكتروني محمي]"، "contents": [( "productID": 34، "productName": "SuperWidget"، "quantity": 1)، ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ]، "اكتمل الطلب": صحيح )
دعونا نقسم هذه البيانات قطعة قطعة:
أخيرًا، نظرًا لأن JSON مطابق للكائنات في JavaScript، يمكنك بسهولة أخذ هذا المثال وإنشاء كائن JavaScript منه:
var cart = ("معرف الطلب": 12345، "shopperName": "John Smith"، "shopperEmail": " [البريد الإلكتروني محمي]"، "contents": [( "productID": 34، "productName": "SuperWidget"، "quantity": 1)، ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ], "اكتمل الطلب": صحيح );
مقارنة JSON مع XMLفي معظم الحالات، ستفكر في JSON كبديل لـ XML - على الأقل داخل تطبيقات الويب. يستخدم مفهوم Ajax في الأصل XML لتبادل البيانات بين الخادم والمتصفح، ولكن في السنوات الأخيرة أصبح JSON أكثر شيوعًا لنقل بيانات Ajax.
على الرغم من أن XML هي تقنية مجربة ومختبرة يتم استخدامها من قبل العديد من التطبيقات، إلا أن مزايا تنسيق JSON هي أنه أكثر إحكاما وأسهل في الكتابة والقراءة.
فيما يلي مثال JSON أعلاه، تمت إعادة كتابته بتنسيق XML فقط:
معرف الطلب 12345 اسم المتسوق جون سميث المتسوق البريد الإلكتروني [البريد الإلكتروني محمي]محتويات معرف المنتج 34 اسم المنتج كمية SuperWidget 1 معرف المنتج 56 اسم المنتج WonderWidget الكمية 3 طلب مكتمل صحيح
كما ترون، فهو أطول بعدة مرات من JSON. في الواقع، يبلغ طول هذا المثال 1128 حرفًا، بينما يبلغ طول إصدار JSON 323 حرفًا فقط. كما أن إصدار XML أكثر صعوبة في القراءة.
وبطبيعة الحال، لا يمكن الحكم على مثال واحد فقط، ولكن حتى الكميات الصغيرة من المعلومات تشغل مساحة أقل في تنسيق JSON مقارنة بـ XML.
كيفية العمل مع JSON عبر PHP وJS؟نأتي الآن إلى الجزء الأكثر إثارة للاهتمام - الجانب العملي لتنسيق JSON. أولاً، دعنا نشيد بجافا سكريبت، ثم سنرى كيف يمكنك التعامل مع JSON من خلال PHP.
إنشاء وقراءة تنسيق JSON باستخدام JavaScriptعلى الرغم من أن تنسيق JSON بسيط، إلا أنه من الصعب الكتابة يدويًا عند تطوير تطبيقات الويب. علاوة على ذلك، غالبًا ما يتعين عليك تحويل سلاسل JSON إلى متغيرات ثم استخدامها في التعليمات البرمجية الخاصة بك.
ولحسن الحظ، توفر العديد من لغات البرمجة أدوات للعمل مع سلاسل JSON. الفكرة الرئيسية منها:
لإنشاء سلاسل JSON، عليك أن تبدأ بالمتغيرات التي تحتوي على بعض القيم، ثم تمررها عبر دالة تحول البيانات إلى سلسلة JSON.
عند قراءة سلاسل JSON، تبدأ بسلسلة JSON تحتوي على بيانات معينة، وتمرر السلسلة من خلال دالة تنشئ متغيرات تحتوي على البيانات.
دعونا نرى كيف يتم ذلك في جافا سكريبت.
إنشاء سلسلة JSON من متغير JavaScriptتحتوي JavaScript على طريقة مضمنة، JSON.stringify()، والتي تأخذ متغير جافا سكريبت وتقوم بإرجاع سلسلة json تمثل محتويات المتغير. على سبيل المثال، لنستخدم كائنًا تم إنشاؤه مسبقًا ونحوله إلى سلسلة JSON.
var cart = ("معرف الطلب": 12345، "shopperName": "John Smith"، "shopperEmail": " [البريد الإلكتروني محمي]"، "contents": [( "productID": 34، "productName": "SuperWidget"، "quantity": 1)، ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ]، "اكتمل الطلب": تنبيه صحيح (JSON.stringify(cart));
وهذا ما سيظهر على الشاشة:
("معرف الطلب":12345،"shopperName": "John Smith"، "shopperEmail": " [البريد الإلكتروني محمي]"، "contents":[("productID":34,"productName": "SuperWidget"، "quantity": 1)، ("productID":56، "productName": "WonderWidget"، "quantity": 3) ]، "اكتمل الطلب":صحيح)
لاحظ أن JSON.stringify() يُخرج سلاسل JSON بدون مسافات. من الصعب قراءتها، ولكنها أكثر إحكاما، وهو أمر مهم عند إرسال البيانات.
إنشاء متغير JavaScript من سلسلة JSONهناك عدة طرق لتحليل سلاسل JSON، الطريقة الأكثر قبولًا وأمانًا هي استخدام طريقة JSON.parse(). يأخذ سلسلة JSON ويعيد كائن JavaScript أو مصفوفة تحتوي على بيانات JSON. هنا مثال:
var jsonString = " \ ( \ "معرف الطلب": 12345، \ "shopperName": "John Smith"، \ "shopperEmail": " [البريد الإلكتروني محمي]"، \ "contents": [ \ ( \ "productID": 34، \ "productName": "SuperWidget"، \ "quantity": 1 \)، \ ( \ "productID": 56، \ "productName": " WonderWidget"، \"quantity": 3\ ) \ ]، \"orderCompleted": true \ ) \"; عربة فار = JSON.parse(jsonString); تنبيه (cart.shopperEmail)؛ تنبيه (cart.contents.productName)؛
قمنا هنا بإنشاء متغير، jsonString، والذي يحتوي على سلسلة JSON من الأمثلة المقدمة مسبقًا. ثم مررنا هذه السلسلة عبر JSON.parse() لإنشاء كائن يحتوي على بيانات JSON، والتي تم تخزينها في متغير سلة التسوق. وأخيرًا، نتحقق من توفر البيانات ونعرض بعض المعلومات باستخدام نافذة التنبيه المشروطة.
سيتم عرض المعلومات التالية:
في تطبيق ويب حقيقي، يجب أن يتلقى رمز JavaScript الخاص بك سلسلة JSON كاستجابة من الخادم (بعد إرسال طلب AJAX)، ثم تحليل السلسلة وعرض محتويات سلة التسوق للمستخدم.
إنشاء وقراءة تنسيق JSON باستخدام PHPPHP، مثل JavaScript، لديها وظائف تسمح لك بتحويل المتغيرات إلى تنسيق JSON، والعكس صحيح. دعونا ننظر إليهم.
إنشاء سلسلة JSON من متغير PHPيأخذ Json_encode() متغير PHP ويعيد سلسلة JSON التي تمثل بيانات المتغير. فيما يلي مثالنا عن "عربة التسوق" المكتوبة بلغة PHP:
ينتج عن هذا الكود نفس النتيجة تمامًا مثل مثال JavaScript - سلسلة JSON صالحة تمثل محتويات المتغيرات:
("معرف الطلب":12345،"shopperName": "John Smith"، "shopperEmail": " [البريد الإلكتروني محمي]"،"contents":[("productID":34,"productName": "SuperWidget"، "quantity": 1)،("productID":56، "productName": "WonderWidget"، "quantity": 3) ]"اكتمل الطلب":صحيح)
في الواقع، يجب أن يرسل برنامج PHP النصي سلسلة JSON كرد على طلب AJAX، حيث ستستخدم JavaScript JSON.parse() لتحويل السلسلة إلى متغيرات.
في الدالة json_encode()، يمكنك تحديد معلمات إضافية تسمح لك بتحويل بعض الأحرف إلى شكل سداسي عشري.
إنشاء متغير PHP من سلسلة JSONكما هو مذكور أعلاه، هناك وظيفة json_decode() تسمح لك بفك تشفير سلاسل JSON ووضع المحتويات في متغيرات.
كما هو الحال مع JavaScript، سيُخرج هذا الكود ما يلي:
[البريد الإلكتروني محمي] WonderWidget
افتراضيًا، تقوم الدالة json_decode() بإرجاع كائنات JSON ككائنات PHP. كما هو الحال مع بناء الجملة العادي، نستخدم -> للوصول إلى خصائص الكائن.
إذا أردت لاحقًا استخدام البيانات كمصفوفة ترابطية، فما عليك سوى تمرير المعلمة الثانية الحقيقية إلى الدالة json_decode(). هنا مثال:
$cart = json_decode($jsonString, true); صدى $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
وهذا ينتج نفس النتيجة:
[البريد الإلكتروني محمي] WonderWidget
يمكنك أيضًا تمرير وسائط إضافية إلى الدالة json_decode() لتحديد معالجة الأعداد الكبيرة والتكرار.
في الختام حول تنسيق JSONإذا كنت ستقوم بإنشاء تطبيق ويب باستخدام تقنية Ajax، فمن المؤكد أنك ستستخدم تنسيق JSON لتبادل البيانات بين الخادم والمتصفح.
JSON هو تنسيق نصي لتسجيل البيانات. فهو يسمح لك بالتمثيل في شكل نصي لكل من رقم واحد أو سلسلة وهياكل معقدة، على سبيل المثال، المصفوفات مع البيانات. يعد استخدام تنسيق التسجيل هذا مناسبًا لأنه سهل القراءة وبديهي، بينما يسمح لك في نفس الوقت بتخزين هياكل بيانات معقدة للغاية. بالإضافة إلى ذلك، فهو أكثر إحكاما من XML، لذلك في رأيي هو الأفضل لتبادل البيانات بين متصفح الويب والخادم.
بناء جملة JSON مع الأمثلةعادةً ما تتم كتابة تنسيق json في متغيرين:
1. تسلسل القيم. على سبيل المثال، سيبدو التسلسل 10 و15 و"الاختبار" بتنسيق JSON كما يلي:
2. التسجيل على شكل مفتاح: أزواج القيمة. على سبيل المثال:
("الاسم الكامل": "إيفانوف سيرجي"، "تاريخ الميلاد": "1975/03/09")
مثال أكثر تعقيدًا قليلاً:
("الاسم الكامل": "إيفانوف سيرجي"، "العنوان": ("المدينة": "موسكو"، "الشارع": "بياتنيتسكايا"، "المنزل": "35"))
وظائف PHP للعمل مع تنسيق JSONفي لغة PHP منذ الإصدار 5.2. هناك 4 وظائف فقط:
- json_decode - يفك تشفير سلسلة JSON (يحصل على البيانات من سلسلة تنسيق json)
- json_encode - إرجاع تمثيل JSON للبيانات (تحويل البيانات إلى سلسلة json)
- json_last_error_msg - إرجاع سلسلة تشير إلى رسالة الخطأ الخاصة بالمكالمة الأخيرة لـ json_encode() أو json_decode()
- json_last_error - إرجاع الخطأ الأخير
في الأساس، في الغالب، يتم استخدام وظيفتين فقط: json_encode وjson_decode. لن أخوض في تفاصيل بناء الجملة، يمكنك إلقاء نظرة على php.net لمزيد من التفاصيل. مثال الاستخدام:
$arr1 = array(0,1,2); $json_str = json_encode($arr1); صدى $json_str; // سيُخرج سلسلة json: $arr2 = json_decode($json_str); صدى $arr2; // سيتم الإخراج: 1
يرجى ملاحظة: عند ترميز البيانات باللغة الروسية إلى تنسيق JSON، تقوم وظيفة json_encode بتحويل الأحرف الروسية إلى Unicode، أي. يستبدلها بـ \uXXXX وبالتالي تصبح سلسلة json غير قابلة للقراءة بالنسبة للبشر (ولكنها مفهومة للمتصفح). إذا كنت تريد تجنب التحويل إلى Unicode (على سبيل المثال، عند تصحيح التعليمات البرمجية)، فيمكنك ببساطة استخدام خيار JSON_UNESCAPED_UNICODE.
وأيضًا، حتى لا تتم إضافة شرطات مائلة للتهرب أثناء التشفير وحتى يتم تشفير السلاسل ذات الأرقام كأرقام، يمكنك استخدام JSON_UNESCAPED_SLASHES وJSON_NUMERIC_CHECK. ونتيجة لذلك، لجعل سلسلة json قابلة للقراءة البشرية، سنفعل، على سبيل المثال، ما يلي:
$arr = array("fio" => "إيفانوف سيرجي"، "age" => "32"، "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
بدون استخدام هذه الخيارات سيكون السطر هكذا:
( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439"، "age" : "32"، "vk_url": "https:\/\ /vk.com\/id11111")
وباستخدام الخيارات نحصل على سطر قابل للقراءة:
( "fio" : "إيفانوف سيرجي"، "العمر" : 32، "vk_url" : "https://vk.com/id11111")
نقطة أخرى: إذا كنت تريد أن تقوم الدالة json_decode بإرجاع مصفوفة عند فك تشفير سلسلة json، فما عليك سوى إضافة معلمة ثانية إلى الدالة تساوي true.
$json_str = "( "a":1, "b":2, "c":3 )"; $obj = json_decode($json_str); // الحصول على الكائن echo $obj->a; // سيُخرج 1 $arr = json_decode($json_str, true); // الحصول على مصفوفة ترابطية echo $arr["a"]; // سيتم طباعة 1
وبهذا تنتهي مراجعتي لوظائف PHP.
وظائف JavaScript للعمل مع تنسيق JSONلنبدأ بحقيقة أن تنسيق JSON تم اختراعه في الأصل للغة JavaScript ثم أصبح مجرد تنسيق نص منفصل يستخدم في لغات مختلفة. على ما يبدو، هذا هو السبب في أن بناء جملة JSON يشبه إلى حد كبير بناء جملة كتابة الكائنات والمصفوفات العادية.
// مثال لمصفوفة في JavaScript arr = ; تنبيه(arr); // سيتم عرض 1 // مثال لكائن في JavaScript obj = ( "name": "Vasya"، "age": 35، "isAdmin": false ) تنبيه(obj.name); // سيتم طباعة "فاسيا"
وظائف JavaScript المستخدمة للتحويل من وإلى تنسيق JSON:
- JSON.parse - فك تشفير سلسلة JSON (تحويل سلسلة إلى كائنات و/أو صفائف)
- JSON.stringify - يُرجع تمثيل JSON للبيانات (تحويل الكائنات و/أو المصفوفات إلى سلسلة json)
مثال بسيط لفك تشفير سلسلة json إلى مصفوفة تحتوي على أرقام:
Str = ""; arr = JSON.parse(str); تنبيه(arr); // سيتم طباعة 1
مثال لتحويل (تسلسل) كائن إلى سلسلة JSON:
Obj = ( "name": "Vasya"، "age": 35، "isAdmin": false ) تنبيه(JSON.stringify(obj)); // سيتم عرض ("name": "Vasya"، "age": 35، "isAdmin": false)
عند إجراء تسلسل (تحويل) كائن إلى سلسلة JSON، يتم استدعاء طريقة toJSON لهذا الكائن، إذا كانت موجودة. إذا لم يكن هناك أسلوب، فسيتم سرد كافة خصائص الكائن. مثال لتحويل كائن باستخدام طريقة toJSON:
Obj = ( "name": "Vasya"، "age": 35، "isAdmin": false، toJSON: function() ( return this.age; ) ) تنبيه(JSON.stringify(obj)); // سيتم طباعة 35
أمثلة على التطبيق العملي لتنسيق JSONفي الواقع، أنا شخصيًا أستخدم تنسيق JSON في حالتين رئيسيتين:
1. نقل البيانات بين المتصفح والخادم باستخدام طلبات Ajax.على سبيل المثال، لدينا بعض الصفحات التي نحتاج إلى تحديث البيانات فيها دون إعادة تحميل الصفحة. لنفترض أنك بحاجة إلى "تنزيل" معلومات تتضمن قائمة الموظفين وبياناتهم من الخادم.
في JavaScript، وباستخدام jQuery، نبسط الأمر ونعرض البيانات على شكل جدول في المتصفح:
$.getJSON("get-info.php").success(function(data) ( // طلب ajax، سيتم كتابة البيانات من الخادم إلى متغير البيانات htmlstr = "