زبان json JSON: اصول اولیه
حتما تا به حال نام JSON را شنیده اید. چیست؟ چه کاری می تواند انجام دهد و چگونه از آن استفاده کنیم؟
در این آموزش به اصول اولیه JSON و نکات زیر خواهیم پرداخت:
- JSON چیست؟
- JSON برای چه مواردی استفاده می شود؟
- چگونه یک رشته JSON ایجاد کنیم؟
- یک مثال ساده از یک رشته JSON.
- بیایید JSON و XML را با هم مقایسه کنیم.
- چگونه با JSON در جاوا اسکریپت و 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 آورده شده است:
( "شناسه سفارش": 12345، "نام خرید": "وانیا ایوانوف"، "خرید ایمیل": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "Super product"، "quantity": 1 ), ( "productID": 56, "productName": "Miracle product"، "quantity": 3 ) ]، "orderCompleted": true)
بیایید با جزئیات به خط نگاه کنیم:
- با استفاده از بریس های فرفری (( و )) یک شی ایجاد می کنیم.
- شی دارای چندین جفت نام/مقدار است: "orderID": 12345 یک ویژگی با نام "orderId" و یک مقدار صحیح 12345 "shopperName": "Vanya Ivanov" یک ویژگی با نام "shopperName" و مقدار رشته "Vanya Ivanov" " "shopperEmail": " [ایمیل محافظت شده]" یک ویژگی به نام "shopperEmail" با مقدار رشته " [ایمیل محافظت شده]" "contents": [... ] یک ویژگی به نام "contents" که مقدار آن آرایه "orderCompleted" است: true یک ویژگی به نام "orderCompleted" و مقدار بولی true
- 2 شی در آرایه "محتوا" وجود دارد که آیتم های فردی را در ترتیب نشان می دهد. هر شی شامل 3 ویژگی است: productID، productName، و مقدار.
به هر حال، از آنجایی که JSON مبتنی بر اعلان اشیاء جاوا اسکریپت است، می توانید به سرعت و به راحتی رشته JSON فوق را به یک شی جاوا اسکریپت تبدیل کنید:
var cart = ( "orderID": 12345، "shopperName": "Vanya Ivanov"، "shopperEmail": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "Super product"، "quantity": 1 ), ( "productID": 56, "productName": "Miracle product"، "quantity": 3 ) ], "orderCompleted": true );
مقایسه JSON و XMLاز بسیاری جهات، می توانید JSON را به عنوان جایگزینی برای XML، حداقل در فضای برنامه های وب، در نظر بگیرید. مفهوم AJAX در ابتدا مبتنی بر استفاده از XML برای انتقال داده بین سرور و مرورگر بود. اما در سال های اخیر، JSON برای انتقال داده های AJAX به طور فزاینده ای محبوب شده است.
در حالی که XML یک فناوری اثبات شده است که در تعداد زیادی از برنامهها استفاده میشود، JSON این مزیت را دارد که فرمت داده فشردهتر و قابل تشخیص آسانتر است.
شیء مثال بالا در XML به این صورت است:
شناسه سفارش 12345 نام خریدار وانیا ایوانوف ایمیل [ایمیل محافظت شده]محتویات شناسه محصول 34 نام محصول تعداد فوق العاده محصول 1 شناسه محصول 56 نام محصول معجزه تعداد محصول 3 سفارش تکمیل شده واقعی
نسخه XML به طور قابل توجهی بزرگتر است. در واقع 1128 کاراکتر طول دارد، در حالی که نسخه JSON تنها 323 کاراکتر طول دارد. درک نسخه XML نیز بسیار دشوار است.
البته این یک مثال رادیکال است. و امکان ایجاد یک رکورد XML فشرده تر وجود دارد. اما حتی به طور قابل توجهی طولانی تر از معادل JSON خواهد بود.
کار با یک رشته JSON در جاوا اسکریپتJSON فرمت ساده ای دارد، اما ایجاد یک رشته JSON به صورت دستی بسیار خسته کننده است. علاوه بر این، شما اغلب نیاز دارید که یک رشته JSON بگیرید، محتوای آن را به متغیری تبدیل کنید که می تواند در کد استفاده شود.
اکثر زبان های برنامه نویسی دارای ابزارهایی برای تبدیل آسان متغیرها به رشته های JSON و بالعکس هستند.
ایجاد یک رشته JSON از یک متغیرجاوا اسکریپت دارای یک متد JSON.stringify() داخلی است که یک متغیر را می گیرد و یک رشته JSON نشان دهنده محتوای آن را برمی گرداند. به عنوان مثال، بیایید یک شی جاوا اسکریپت ایجاد کنیم که حاوی اطلاعات سفارش از مثال ما باشد، و سپس یک رشته JSON از آن ایجاد کنیم:
var cart = ( "orderID": 12345، "shopperName": "Vanya Ivanov"، "shopperEmail": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "Super product"، "quantity": 1 ), ( "productID": 56, "productName": "Miracle product"، "quantity": 3 ) ], "orderCompleted": true (JSON.stringify(cart));
این کد تولید خواهد کرد:
توجه داشته باشید که متد ()JSON.stringify یک رشته JSON را بدون فاصله برمی گرداند. خواندن آن دشوارتر است، اما برای انتقال از طریق شبکه فشرده تر است.
راه های مختلفی برای تجزیه رشته JSON در جاوا اسکریپت وجود دارد، اما مطمئن ترین و مطمئن ترین آن استفاده از متد داخلی JSON.parse() است. یک رشته JSON دریافت می کند و یک شی یا آرایه جاوا اسکریپت را که حاوی داده است برمی گرداند. مثلا:
var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [ایمیل محافظت شده]"، \ "محتوا": [ \ ( \ "productID": 34، \ "productName": "Super product"، \ "تعداد": 1 \), \ ( \ "productID": 56, \ "productName": "معجزه کالا"، \"تعداد": 3\ ) \ ]، \"سفارش تکمیل شد": درست \ ) \"; var cart = JSON.parse(jsonString); هشدار(cart.shopperEmail); هشدار(cart.contents.productName);
ما یک متغیر jsonString ایجاد کردیم که شامل رشته JSON سفارش نمونه ما است. سپس این رشته را به متد JSON.parse() میدهیم که یک شی حاوی دادههای JSON ایجاد میکند و آن را در متغیر سبد خرید ذخیره میکند. تنها چیزی که باقی می ماند این است که با نمایش ویژگی های شی shopperEmail و productName آرایه محتوا بررسی شود.
در نتیجه خروجی زیر را دریافت خواهیم کرد:
در یک برنامه واقعی، کد جاوا اسکریپت شما سفارش را به عنوان یک رشته JSON در یک پاسخ AJAX از اسکریپت سرور دریافت می کند، رشته را به متد JSON.parse() منتقل می کند و سپس از داده ها برای نمایش آن در صفحه کاربر استفاده می کند.
JSON.stringify() و JSON.parse() قابلیت های دیگری مانند استفاده از توابع برگشت به تماس برای تبدیل سفارشی داده های خاص دارند. چنین گزینه هایی برای تبدیل داده های مختلف به اشیاء جاوا اسکریپت مناسب بسیار مفید هستند.
کار با رشته JSON در PHPPHP مانند جاوا اسکریپت دارای توابع داخلی برای کار با رشته های JSON است.
ایجاد یک رشته JSON از یک متغیر PHPتابع json_encode() یک متغیر PHP می گیرد و یک رشته JSON نشان دهنده محتویات متغیر را برمی گرداند. در اینجا نمونه سفارش ما است که در PHP نوشته شده است:
این کد دقیقاً همان رشته JSON را برمی گرداند که در مثال جاوا اسکریپت:
("orderID":12345,"shopperName":"وانیا ایوانوف"،"shopperEmail":" [ایمیل محافظت شده]""contents":[("productID":34,"productName":"Super product"،"quantity":1)،("productID":56,"productName":"محصول معجزه"، "مقدار": 3)]"orderCompleted":true)
در یک برنامه واقعی، اسکریپت PHP شما این رشته JSON را به عنوان بخشی از پاسخ AJAX به مرورگر می فرستد، جایی که کد جاوا اسکریپت با استفاده از متد JSON.parse() آن را به یک متغیر برای نمایش در صفحه کاربر تجزیه می کند. .
می توانید پرچم های مختلفی را به عنوان آرگومان دوم به تابع json_encode() ارسال کنید. با کمک آنها می توانید اصول رمزگذاری محتویات متغیرها را به یک رشته JSON تغییر دهید.
یک متغیر از یک رشته JSON ایجاد کنیدبرای تبدیل رشته JSON به متغیر PHP، از متد json_decode() استفاده کنید. بیایید مثال خود را برای جاوا اسکریپت با متد JSON.parse() با کد PHP جایگزین کنیم:
همانند جاوا اسکریپت، این کد تولید خواهد کرد:
[ایمیل محافظت شده]محصول معجزه آسا
به طور پیش فرض، تابع json_decode() اشیاء JSON را به عنوان اشیاء PHP برمی گرداند. اشیاء عمومی PHP از کلاس stdClass وجود دارد. به همین دلیل است که از -> برای دسترسی به ویژگی های شی در مثال بالا استفاده می کنیم.
اگر به یک شی JSON به عنوان یک آرایه PHP مرتبط نیاز دارید، باید true را به عنوان آرگومان دوم به تابع ()json_decode ارسال کنید. مثلا:
$cart = json_decode ($jsonString، true); echo $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
این کد همان خروجی را تولید می کند:
[ایمیل محافظت شده]محصول معجزه آسا
همچنین میتوانید آرگومانهای دیگری را به تابع ()json_decode ارسال کنید تا عمق بازگشت و نحوه مدیریت اعداد صحیح بزرگ را مشخص کنید.
نتیجهاگرچه JSON قابل درک و استفاده آسان است، اما ابزاری بسیار مفید و منعطف برای انتقال داده ها بین برنامه ها و رایانه ها، به ویژه در هنگام استفاده از AJAX است. اگر قصد توسعه یک برنامه AJAX را دارید، بدون شک JSON به یک ابزار ضروری در کارگاه شما تبدیل خواهد شد.
JSON چیست و چه کاری می تواند انجام دهد؟ در این مقاله یاد می گیرید که چگونه از JSON برای کار راحت با داده ها استفاده کنید. همچنین نحوه کار با JSON با استفاده از PHP و جاوا اسکریپت را بررسی خواهیم کرد.
اگر وبسایتها یا برنامههای کاربردی وب را به طور کلی توسعه دادهاید، احتمالاً نام JSON را شنیدهاید، حداقل گذرا. اما JSON دقیقا به چه معناست؟ این قالب داده چه کاری می تواند انجام دهد و چگونه می توان از آن استفاده کرد؟
در این مقاله با اصول کار با فرمت json آشنا می شویم. موضوعات زیر را دنبال خواهیم کرد:
- فرمت JSON چیست؟
- چگونه رشته های JSON ایجاد کنیم؟
- مثال ساده از داده های JSON
- مقایسه JSON با XML
بیا شروع کنیم!
فرمت JSON چیست؟JSON یک روش ساده و مبتنی بر متن برای ذخیره و انتقال داده های ساخت یافته است. با یک نحو ساده، میتوانید به راحتی هم اعداد و رشتههای ساده و هم آرایهها و اشیاء را بدون استفاده از متن ذخیره کنید. همچنین میتوانید اشیا و آرایهها را پیوند دهید، که به شما امکان میدهد ساختارهای داده پیچیده ایجاد کنید.
هنگامی که رشته JSON ایجاد شد، می توان آن را به راحتی به هر برنامه یا رایانه ای ارسال کرد زیرا فقط متن است.
JSON مزایای زیادی دارد:
- جمع و جور است
- برای انسان قابل خواندن است و به راحتی توسط رایانه قابل خواندن است
- به راحتی می توان آن را به فرمت های نرم افزاری تبدیل کرد: مقادیر عددی، رشته ها، فرمت بولی، مقدار تهی، آرایه ها و آرایه های انجمنی.
- تقریباً همه زبان های برنامه نویسی دارای توابعی هستند که به شما امکان خواندن و ایجاد فرمت داده json را می دهد.
به معنای واقعی کلمه، مخفف JSON مخفف JavaScript Object Notation است. همانطور که قبلاً توضیح داده شد، این قالب بر اساس ایجاد اشیا است، چیزی شبیه به آرایه های انجمنی در سایر زبان های برنامه نویسی.
JSON برای چه اهدافی استفاده می شود؟بیشتر از همه، json برای تبادل داده بین جاوا اسکریپت و سمت سرور (php) استفاده می شود. به عبارت دیگر، برای فناوری ajax. این بسیار راحت است زمانی که چندین متغیر یا کل آرایه داده را ارسال می کنید.
در اینجا به نظر می رسد در یک مثال:
به این ترتیب تصویر بدون بارگیری مجدد صفحه در مرورگر بزرگ می شود. این بسیار راحت است زمانی که ما نیاز به دریافت اطلاعات جزئی، یا انتقال مقدار کمی از اطلاعات به سرور داریم.
جی کوئری مورد علاقه همه دارای توابع getJSON() و parseJSON() است که به شما کمک می کند از طریق درخواست های ajax با فرمت کار کنید.
چگونه رشته های JSON ایجاد کنیم؟در زیر قوانین اساسی برای ایجاد رشته های JSON آمده است:
- رشته JSON شامل یک آرایه از مقادیر و یک شی (آرایه انجمنی با جفت نام/مقدار) است.
- آرایه باید در براکت های مربع، [ و ] پیچیده شود، و می تواند حاوی لیستی از مقادیری باشد که با کما از هم جدا شده اند.
- اشیاء با استفاده از بازوهای فرفری ( و ) پیچیده می شوند و همچنین دارای جفت نام/مقدار جدا شده با کما هستند.
- جفتهای نام/مقدار از نام فیلد (در گیومههای دوتایی) و به دنبال آن یک دونقطه (:) و به دنبال آن مقدار فیلد تشکیل شدهاند.
- مقادیر موجود در یک آرایه یا شی می توانند به صورت زیر باشند:
- عددی (عدد صحیح یا کسری نقطهدار)
- رشته ها (پیچیده شده در دو گیومه)
- بولی (درست یا نادرست)
- آرایه های دیگر (پیچیده شده در پرانتز [و])
- سایر اشیاء (پیچیده شده در بازوهای مجعد (و))
- مقدار صفر
مهم! اگر از گیومه های دوتایی در مقادیر استفاده می کنید، با علامت معکوس از آنها فرار کنید.
مثال ساده از داده های JSONمثال زیر نشان می دهد که چگونه می توانید داده ها را در "سبد" یک فروشگاه آنلاین با استفاده از فرمت JSON ذخیره کنید:
("orderID": 12345، "shopperName": "John Smith"، "shopperEmail": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "SuperWidget"، "quantity": 1 ), ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ]، "orderCompleted": true)
بیایید این داده ها را تکه تکه تجزیه کنیم:
در نهایت، از آنجایی که JSON با اشیاء در جاوا اسکریپت یکسان است، می توانید به راحتی این مثال را بگیرید و یک شی جاوا اسکریپت از آن ایجاد کنید:
var cart = ("orderID": 12345، "shopperName": "John Smith"، "shopperEmail": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "SuperWidget"، "quantity": 1 ), ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ], "orderCompleted": true );
مقایسه JSON با XMLدر بیشتر موارد، JSON را به عنوان جایگزینی برای XML در نظر می گیرید - حداقل در برنامه های وب. مفهوم Ajax در اصل از XML برای تبادل داده بین سرور و مرورگر استفاده میکند، اما در سالهای اخیر JSON برای انتقال دادههای ajax محبوبتر شده است.
اگرچه XML یک فناوری آزمایش شده و آزمایش شده است که توسط بسیاری از برنامه ها استفاده می شود، مزایای فرمت JSON این است که فشرده تر و نوشتن و خواندن آن آسان تر است.
در اینجا مثال JSON بالا است که فقط در قالب XML بازنویسی شده است:
شناسه سفارش 12345 نام خریدار جان اسمیت ایمیل خریدار [ایمیل محافظت شده]محتویات productID 34 productName مقدار SuperWidget 1 productID 56 productName WonderWidget مقدار 3 سفارش کامل شده درست
همانطور که می بینید، چندین برابر بیشتر از JSON است. در واقع، این مثال 1128 کاراکتر است، در حالی که نسخه JSON تنها 323 کاراکتر است. خواندن نسخه XML نیز دشوارتر است.
طبیعتاً نمی توان تنها با یک مثال قضاوت کرد، اما حتی مقادیر کمی از اطلاعات فضای کمتری را در فرمت JSON نسبت به XML اشغال می کنند.
چگونه با JSON از طریق PHP و JS کار کنیم؟اکنون به جالب ترین بخش می رسیم - جنبه عملی فرمت JSON. ابتدا اجازه دهید به جاوا اسکریپت ادای احترام کنیم، سپس خواهیم دید که چگونه می توانید JSON را از طریق PHP دستکاری کنید.
ایجاد و خواندن فرمت JSON با استفاده از جاوا اسکریپتاگرچه فرمت JSON ساده است، نوشتن دستی هنگام توسعه برنامه های وب دشوار است. علاوه بر این، اغلب باید رشته های JSON را به متغیر تبدیل کنید و سپس از آنها در کد خود استفاده کنید.
خوشبختانه بسیاری از زبان های برنامه نویسی ابزارهایی را برای کار با رشته های JSON ارائه می دهند. ایده اصلی که:
برای ایجاد رشتههای JSON، شما با متغیرهایی شروع میکنید که حاوی مقادیری هستند، سپس آنها را از طریق تابعی عبور میدهید که دادهها را به یک رشته JSON تبدیل میکند.
با خواندن رشته های JSON، با یک رشته JSON حاوی داده های خاص شروع می کنید، رشته را از طریق تابعی که متغیرهای حاوی داده را ایجاد می کند، عبور دهید.
بیایید ببینیم چگونه این کار در جاوا اسکریپت انجام می شود.
ایجاد یک رشته JSON از یک متغیر جاوا اسکریپتجاوا اسکریپت دارای یک متد داخلی به نام JSON.stringify() است که یک متغیر جاوا اسکریپت را می گیرد و یک رشته json نشان دهنده محتویات متغیر را برمی گرداند. به عنوان مثال، بیایید از یک شی که قبلا ایجاد شده استفاده کنیم و آن را به یک رشته JSON تبدیل کنیم.
var cart = ("orderID": 12345، "shopperName": "John Smith"، "shopperEmail": " [ایمیل محافظت شده]"، "محتوا": [ ( "productID": 34، "productName": "SuperWidget"، "quantity": 1 ), ( "productID": 56، "productName": "WonderWidget"، "quantity": 3 ) ], "orderCompleted": true (JSON.stringify(cart));
این چیزی است که روی صفحه ظاهر می شود:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [ایمیل محافظت شده]"، "محتوا":[("productID":34,"productName":"SuperWidget"،"quantity":1)، ("productID":56,"productName":"WonderWidget"،"کوانتیت":3) ]، "orderCompleted":true)
توجه داشته باشید که JSON.stringify() رشته های JSON را بدون فاصله خروجی می دهد. خواندن آن دشوار است، اما فشرده تر است، که هنگام ارسال داده مهم است.
ایجاد یک متغیر جاوا اسکریپت از یک رشته JSONروش های مختلفی برای تجزیه رشته های JSON وجود دارد که قابل قبول ترین و ایمن ترین آنها استفاده از متد JSON.parse() است. یک رشته JSON می گیرد و یک شی یا آرایه جاوا اسکریپت حاوی داده های JSON را برمی گرداند. در اینجا یک مثال است:
var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [ایمیل محافظت شده]"، \ "محتوا": [ \ ( \ "productID": 34، \ "productName": "SuperWidget"، \ "Qantity": 1 \)، \ ( \ "productID": 56, \ "productName": " WonderWidget، \ "quantity": 3 \ ) \ ], \ "orderCompleted": true \ ) \ "; var cart = JSON.parse(jsonString); هشدار(cart.shopperEmail); هشدار(cart.contents.productName);
در اینجا ما یک متغیر به نام jsonString ایجاد کردیم که شامل رشته JSON از نمونه های قبلی است. سپس این رشته را از طریق JSON.parse() عبور دادیم تا یک شی حاوی داده های JSON ایجاد کنیم که در متغیر سبد خرید ذخیره شده است. در نهایت، ما در دسترس بودن داده ها را بررسی می کنیم و برخی از اطلاعات را با استفاده از پنجره alert modal نمایش می دهیم.
اطلاعات زیر نمایش داده خواهد شد:
در یک برنامه وب واقعی، کد جاوا اسکریپت شما باید یک رشته JSON را به عنوان پاسخ از سرور دریافت کند (پس از ارسال درخواست AJAX)، سپس رشته را تجزیه کرده و محتویات سبد خرید را به کاربر نمایش دهد.
ایجاد و خواندن فرمت JSON با استفاده از PHPPHP مانند جاوا اسکریپت دارای توابعی است که به شما امکان می دهد متغیرها را به فرمت JSON تبدیل کنید و بالعکس. بیایید به آنها نگاه کنیم.
ایجاد یک رشته JSON از یک متغیر PHPJson_encode() یک متغیر PHP می گیرد و یک رشته JSON نشان دهنده داده های متغیر را برمی گرداند. در اینجا مثال ما از "سبد خرید" نوشته شده در PHP است:
این کد دقیقاً نتیجه ای مشابه با مثال جاوا اسکریپت ایجاد می کند - یک رشته JSON معتبر که محتویات متغیرها را نشان می دهد:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [ایمیل محافظت شده]""contents":[("productID":34،"productName":"SuperWidget"، "Quantity":1)،("productID":56,"productName":"WonderWidget"،"Quantity":3) ]"orderCompleted":true)
در واقع، اسکریپت PHP شما باید یک رشته JSON را به عنوان پاسخ به درخواست AJAX ارسال کند، جایی که جاوا اسکریپت از JSON.parse() برای تبدیل رشته به متغیر استفاده می کند.
در تابع json_encode() میتوانید پارامترهای اضافی را مشخص کنید که به شما امکان میدهد برخی از کاراکترها را به هگز تبدیل کنید.
ایجاد یک متغیر PHP از یک رشته JSONمشابه موارد فوق، یک تابع json_decode() وجود دارد که به شما امکان می دهد رشته های JSON را رمزگشایی کرده و محتویات را در متغیرها قرار دهید.
همانند جاوا اسکریپت، این کد خروجی زیر را خواهد داشت:
[ایمیل محافظت شده] WonderWidget
به طور پیش فرض، json_decode() اشیاء JSON را به عنوان اشیاء PHP برمی گرداند. مشابه نحو معمولی، ما از -> برای دسترسی به خصوصیات یک شی استفاده می کنیم.
اگر بعداً می خواهید از داده ها به عنوان یک آرایه انجمنی استفاده کنید، به سادگی پارامتر دوم را به تابع json_decode() ارسال کنید. در اینجا یک مثال است:
$cart = json_decode ($jsonString، true); echo $cart["shopperEmail"] . "
"; echo $cart["contents"]["productName"] . "
";
این همان نتیجه را ایجاد می کند:
[ایمیل محافظت شده] WonderWidget
همچنین می توانید آرگومان های اضافی را به تابع json_decode() ارسال کنید تا پردازش اعداد بزرگ و بازگشت را تعیین کنید.
در پایان در مورد فرمت JSONاگر قصد دارید یک برنامه وب با استفاده از فناوری Ajax ایجاد کنید، مطمئناً از فرمت JSON برای تبادل داده بین سرور و مرورگر استفاده خواهید کرد.
JSON یک فرمت متنی برای ضبط داده است. این به شما امکان می دهد هم یک عدد یا رشته و هم ساختارهای پیچیده را به صورت متنی نمایش دهید، برای مثال آرایه هایی با داده ها. استفاده از این فرمت ضبط راحت است زیرا خوانا و شهودی است و در عین حال به شما امکان می دهد ساختارهای داده بسیار پیچیده را ذخیره کنید. علاوه بر این، فشرده تر از xml است، بنابراین به نظر من برای تبادل داده بین یک مرورگر وب و یک سرور ترجیح داده می شود.
دستور JSON با مثالفرمت json معمولا در 2 نوع نوشته می شود:
1. توالی مقادیر. به عنوان مثال، دنباله 10، 15 و "test" در فرمت JSON به شکل زیر است:
2. ضبط به صورت جفت های کلید: ارزش. مثلا:
("نام کامل": "ایوانف سرگئی"، "تاریخ تولد": "03/09/1975")
مثال کمی پیچیده تر:
("نام کامل": "ایوانف سرگئی"، "آدرس": ("شهر": "مسکو"، "خیابان": "پیاتنیتسکایا"، "خانه": "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 = آرایه (0,1,2); $json_str = json_encode ($arr1); echo $json_str; // یک رشته json را خروجی خواهد کرد: $arr2 = json_decode($json_str); echo $arr2; // خروجی: 1
لطفاً توجه داشته باشید: هنگام رمزگذاری داده ها به زبان روسی به فرمت JSON، تابع json_encode کاراکترهای روسی را به یونیکد تبدیل می کند. آنها را با \uXXXX جایگزین می کند و بنابراین رشته json برای انسان غیرقابل خواندن می شود (اما برای مرورگر قابل درک است). اگر می خواهید از تبدیل به یونیکد جلوگیری کنید (به عنوان مثال، هنگام اشکال زدایی کد)، می توانید به سادگی از گزینه JSON_UNESCAPED_UNICODE استفاده کنید.
همچنین برای اینکه اسلش های فراری در حین رمزگذاری اضافه نشود و رشته های دارای اعداد به صورت اعداد کدگذاری شوند، می توانید از JSON_UNESCAPED_SLASHES و JSON_NUMERIC_CHECK استفاده کنید. در نتیجه، برای خوانایی رشته json برای انسان، به عنوان مثال این کار را انجام می دهیم:
$arr = array("fio" => "ایوانف سرگئی"، "سن" => "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"، "سن": "32", "http:\u043e\u0435\u0440\u0433\u0435\u0439" /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 است.
توابع جاوا اسکریپت برای کار با فرمت JSONبیایید با این واقعیت شروع کنیم که فرمت JSON در ابتدا برای زبان جاوا اسکریپت اختراع شد و سپس به سادگی تبدیل به یک قالب متن جداگانه مورد استفاده در زبان های مختلف شد. ظاهراً به همین دلیل است که نحو JSON بسیار شبیه به سینتکس برای نوشتن اشیاء و آرایههای معمولی است.
// مثالی از آرایه در جاوا اسکریپت arr = ; هشدار (arr); // 1 را نشان می دهد // نمونه ای از یک شی در جاوا اسکریپت obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) alert(obj.name); // "واسیا" را چاپ خواهد کرد
توابع جاوا اسکریپت مورد استفاده برای تبدیل و تبدیل به فرمت JSON:
- JSON.parse - رمزگشایی یک رشته JSON (تبدیل یک رشته به اشیا و/یا آرایه ها)
- JSON.stringify - نمایش JSON از داده ها را برمی گرداند (تبدیل اشیا و/یا آرایه ها به رشته json)
یک مثال ساده از رمزگشایی یک رشته json به یک آرایه با اعداد:
Str = ""; arr = JSON.parse(str); هشدار (arr); // 1 را چاپ خواهد کرد
مثالی از تبدیل (سریال کردن) یک شی به یک رشته JSON:
Obj = ( "name": "Vasya"، "age": 35، "isAdmin": false ) alert(JSON.stringify(obj)); // نمایش داده می شود ("name":"Vasya", "age":35,"isAdmin":false)
هنگام سریال سازی (تبدیل) یک شی به رشته JSON، متد toJSON این شیء در صورت وجود فراخوانی می شود. اگر روشی وجود نداشته باشد، تمام خصوصیات شی فهرست می شود. مثالی از تبدیل یک شی با متد toJSON:
Obj = ( "name": "Vasya"، "age": 35، "isAdmin": false، toJSON: function() ( return this.age; ) ) alert(JSON.stringify(obj)); // 35 چاپ خواهد کرد
نمونه هایی از کاربرد عملی فرمت JSONدر واقع، من شخصا از فرمت JSON در 2 موقعیت اصلی استفاده می کنم:
1. انتقال داده ها بین مرورگر و سرور با استفاده از درخواست های Ajax.برای مثال، صفحهای داریم که باید دادهها را بدون بارگیری مجدد صفحه بهروزرسانی کنیم. فرض کنید برای «دانلود کردن» از سرور به اطلاعاتی با لیستی از کارمندان و داده های آنها نیاز دارید.
در جاوا اسکریپت با استفاده از jQuery آن را ساده کرده و داده ها را به صورت جدول در مرورگر نمایش می دهیم:
$.getJSON("get-info.php").success(function(data) ( // درخواست ajax، داده ها از سرور در متغیر داده htmlstr = "