نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • خطاها
  • ذخیره سبک سند در قالب json. JSON برای مبتدیانی که از جاوا اسکریپت و جی کوئری استفاده می کنند

ذخیره سبک سند در قالب json. JSON برای مبتدیانی که از جاوا اسکریپت و جی کوئری استفاده می کنند

JSON از سال 1999 بخشی از استاندارد ECMAScript بوده است، زمانی که ECMA تابع فرمت آگاه () eval را تعریف کرد. محبوبیت آن همراه با موفقیت روزافزون آژاکس افزایش یافت. وقتی کسی در مورد Ajax صحبت می کند، کلمه JSON زیاد به میان می آید. JSON به عنوان یکی دیگر از فرمت های داده شناخته شده است، که جایگزین XML می شود و بسیاری از برنامه نویسان فعالانه از آن پشتیبانی می کنند. اما JSON چیست و چه مزایایی دارد؟

چرا JSON؟

مزیت JSON این است که توسط جاوا اسکریپت شناخته می شود. برای انتقال داده ها از طریق اینترنت، مانند XML نیازی به تجزیه سند نیست.

JSON و XML

مزایای JSON:

  • آسان برای خواندن و درک.
  • ساده برای استفاده.

مزایای XML:

  • قابل گسترش

هر دو XML و JSON توانایی ادغام مقادیر زیادی از داده ها را به صورت باینری دارند.

نحو JSON

اجزای JSON:

  • اشیاء: شامل اشیا یا صفات است.
  • متغیرهای اسکالر: عدد، رشته، متغیر بولی.
  • آرایه.
  • مقادیر تحت اللفظی: خالی, درست است، واقعی, نادرست, "رشته کاراکتر"، و مقادیر عددی.

یک شی

حاوی یک عنصر یا فهرستی از عناصر است که در آن هر عنصر به شرح زیر است:

"name": "ارزش"

نحو شیء:

(عنصر، عنصر، ....)

آرایه

مجموعه ای از مقادیر جدا شده با کاما.

[ارزش، ارزش، ....]

معنی

مقدار می تواند: شی، آرایه، مقدار تحت اللفظی (رشته، عدد، درست است، واقعی, نادرست, خالی).

برای ایجاد فایل JSON به هیچ چیز دیگری نیاز ندارید!

نمونه فایل JSON

یک مثال ساده از ساختار منو. V این شیشامل ویژگی ها و آرایه ای است که شامل سایر اشیاء نوار منو می شود.

("منو": "پرونده"، "فرمان‌ها": [("عنوان": "جدید"، "عمل": "CreateDoc")، ("عنوان": "باز"، "عمل": "OpenDoc")، ("عنوان": "بستن"، "عمل": "CloseDoc")]) معادل XML:

فایل جدید</value> <action>CreateDoc</action> </item> <item> <title>باز کن</value> <action>OpenDoc</action> </item> <item> <title>نزدیک</value> <action>CloseDoc</action> </item> </commands> </root> </p><h3><span>نحوه استفاده از فرمت</span></h3> <p>یک فایل JSON به شما امکان می دهد داده ها را از سرور یا سرور آپلود کنید. به عنوان مثال، ذخیره محتوای فرمی که به تازگی توسط کاربر پر شده است. این فرآیند شامل سه مرحله است: پردازش توسط مرورگر، پردازش توسط سرور و تبادل داده بین آنها.</p> <h4><span>سمت مشتری (مرورگر)</span></h4> <p>این بخش بسیار ساده است زیرا JSON بخشی از تعریف جاوا اسکریپت است. محتویات فایل یا داده های تعریف کننده به متغیرها اختصاص داده می شود و آنها به اشیاء برنامه تبدیل می شوند.</p> <h4>بخش سرور</h4> <p>فایل JSON به دلیل وجود تجزیه کننده هایی که به شما امکان دریافت محتوا و حتی تبدیل آن به کلاس ها و ویژگی های زبان را می دهد توسط زبان های برنامه نویسی مختلف از جمله PHP و جاوا استفاده می شود. سایت JSON حاوی تجزیه کننده های بسیاری از زبان های برنامه نویسی است.</p> <h4>تبادل اطلاعات</h4> <ul><li><span>با استفاده از XMLHttpRequest.</span></li> </ul><p>فایل JSON در حال پردازش است <a href="https://bumotors.ru/fa/javascript-ispolzovanie-ranee-obyavlennoi-funkcii-v-drugoi-funkcii-funkcii-kak.html">تابع جاوا اسکریپت</a> <i>eval ()</i>... ارسال فایل به سرور با استفاده از XMLHttpRequest قابل انجام است. فایل به صورت یک فایل متنی ارسال می شود و توسط تجزیه کننده زبان برنامه نویسی مورد استفاده در سرور پردازش می شود.</p> <h3>مثال</h3> <p>کد XMLHttpRequest:</p><p>Var req = جدید XMLHttpRequest (); req.open ("GET"، "file.json"، true)؛ req.onreadystatechange = myCode; // handler req.send (null);</p><p>کنترل کننده جاوا اسکریپت:</p><p>تابع myCode () (اگر (req.readyState == 4) (var doc = eval ("(" + req.responseText + ")");)) استفاده از داده: var menuName = document.getElementById ("jsmenu"); // به دنبال فیلد menuName.value = doc.menu.value; // یک مقدار به فیلد اختصاص دهید How to get data: doc.commands.title // خواندن مقدار فیلد "title" در آرایه doc.commands.action // خواندن مقدار "عمل" در قسمت آرایه</p> <p>در این مقاله، می خواهم در مورد فرمت تبادل داده متنی - JSON، یعنی در مورد کار با این فرمت در PHP صحبت کنم.</p> <p>JSON یک فرمت داده متنی فشرده است. می توان از آن هم در خدمات انتقال داده های اینترنتی و هم برای ذخیره سازی اطلاعات به شکل ساختاریافته استفاده کرد.</p> <blockquote><p>JSON ( <i>انگلیسی نشانه گذاری شی جاوا اسکریپت</i>) یک قالب مبادله داده متنی است که بر اساس جاوا اسکریپت است و معمولاً با این زبان خاص استفاده می شود. مثل خیلی های دیگر <a href="https://bumotors.ru/fa/csv-fail-konvertirovat-v-xls-import-i-eksport-tekstovyh-failov-v.html">فرمت های متنی</a> JSON برای انسان آسان است.</p> <p>با وجود منشأ آن از جاوا اسکریپت (به طور دقیق تر، از زیر مجموعه ای از استاندارد ECMA-262 1999)، این فرمت مستقل از زبان در نظر گرفته می شود و تقریباً با هر زبان برنامه نویسی قابل استفاده است. برای بسیاری از زبان ها وجود دارد <a href="https://bumotors.ru/fa/emodzi-smaily-skopirovat-cvetnye-vse-smaily-emoji-kody-simvoly.html">کد آماده</a>برای ایجاد و پردازش داده ها در قالب JSON.</p> <p>مزایای عملی استفاده از JSON با استفاده از آن آشکار می شود <a href="https://bumotors.ru/fa/ajax-chto-eto-takoe-vliyanie-na-seo-preimushchestva-i-nedostatki-tehnologii.html">فناوری های AJAX</a>... JSON مختصرتر و خواناتر از XML است و بومی جاوا اسکریپت است. علاوه بر این، امکان درج توابع کاملاً کاربردی در کد JSON وجود دارد.</p> </blockquote> <p>بله، در فناوری AJAX است، به نظر من، کاربرد اصلی آن است. از آنجایی که فناوری AJAX شامل ارسال درخواست مشتری به سرور است. بیشتر در سرور درخواست پردازش می شود و نتیجه در پاسخ به مشتری ارسال می شود.</p> <h3>نمای داده JSON</h3> <p>JSON از تمام فرمت‌های داده اصلی پشتیبانی می‌کند: رشته‌ها، اعداد، مقادیر بولی، و همچنین آرایه‌ها و اشیاء (کلید: ترکیبات مقادیر، جدا شده با کاما و محصور در داخل <a href="https://bumotors.ru/fa/calculator-with-curly-and-square-brackets-the-complexity-of-calculating-school-examples.html">بریس ها</a>).</p> <p>در اینجا نمونه ای از نمایش داده ها در قالب JSON آمده است:</p><p>("id": "1"، "نام": "ivan"، "کشور": "روسیه"، "دفتر": ["yandex"، "مدیریت"])</p><p>بیایید ببینیم این رشته چه چیزی را می تواند منتقل کند: شخصی به نام "ivan"، تحت شناسه "1" که در کشور "روسیه" زندگی می کند، برای شرکت "yandex" در بخش "مدیریت" کار می کند.</p> <p>بیایید یک مثال دیگر بزنیم. سایت دارای فرم است <a href="https://bumotors.ru/fa/primenenie-operacionnyh-usilitelei-onlain-proverka-raboty-v-proteus-polozhitelnaya-obratnaya-svyaz.html">بازخورد</a>مجهز به فناوری AJAX بازدید کننده اطلاعات را پر می کند، سپس برای تایید به سرور ارسال می شود، در صورت عدم مشاهده خطایی، اطلاعات در پایگاه داده ذخیره می شود و پاسخی مبنی بر ذخیره موفقیت آمیز ارسال می شود. اما در صورت یافتن خطا، پاسخی با انواع خطا برگردانده می شود.</p> <p>نمونه ای از پاسخ خطا در فرمت JSON:</p><p>("خطا": "1"، "errorcode": ["empty_pers"، "empty_mail"، "empty_phone"، "empty_letter"، "empty_scode"])</p><p>یعنی مثلا:</p> <ul><li>شما باید فیلد "شخص تماس" را پر کنید</li> <li>باید فیلد «ایمیل» را پر کنید</li> <li>باید فیلد "تلفن" را پر کنید</li> <li>پیام خود را وارد نمایید</li> <li>پر کردن فیلد "شماره در تصویر" الزامی است.</li> </ul><p>اگر خطایی وجود نداشته باشد، پاسخ برگردانده می شود:</p><p>("خطا": "0")</p><p>این در مورد ارسال موفقیت آمیز داده ها می گوید.</p> <p>در PHP از پسوند JSON برای نمایش داده ها در فرمت JSON استفاده می شود. V <a href="https://bumotors.ru/fa/neskolko-versii-php-i-obnovlenie-php-v-isp-manager-kak-izmenit-ili-obnovit.html">نسخه های PHP</a>پشتیبانی از JSON قدیمی‌تر از 5.2.0 در هسته‌های بیشتر تعبیه شده است <a href="https://bumotors.ru/fa/kak-ustanovit-na-aifon-rannyuyu-versiyu-kak-vernut-predydushchuyu-versiyu-ios.html">نسخه های اولیه</a>باید به اسکریپت شما متصل شود <a href="https://bumotors.ru/fa/kak-pochistit-sistemu-kompyutera-kak-pochistit-kompyuter-ot.html">فایل اضافی</a>با توابع</p> <p>بنابراین در PHP، دو تابع برای کار با داده ها در فرمت JSON مسئول هستند: json_encode () و json_decode ().</p> <h3>تبدیل داده ها به فرمت JSON</h3>$ json_data = آرایه ("id" => 1، "name" => "ivan"، "country" => "Russia"، "office" => آرایه ("yandex"، "management")); echo json_encode ($ json_data)؛ <h3>تبدیل معکوس داده از فرمت JSON</h3>$ json_string = "(" id ": 1," name ":" ivan "," کشور ":" روسیه "," office ": [" yandex "," management "])"; $ obj = json_decode ($ json_string)؛ <p>اکنون $ obj شامل خواهد شد <a href="https://bumotors.ru/fa/sozdanie-i-razbor-dannyh-formata-json-v-php-vid-dannyh-v-formate-json.html">داده های JSON</a>به یک شی PHP ترجمه شده است، که می توانید به این شکل به آن دسترسی داشته باشید:</p><p>Echo $ obj-> name; // نام ivan echo $ obj-> office را نمایش می دهد. // نمایش شرکت Yandex</p><p>همانطور که می بینید، $ obj-> office یک آرایه است.</p><p>Foreach ($ obj-> office به عنوان $ val) echo $ val;</p><p>کار با JSON به شما امکان می دهد داده ها را با سرور در داخل مبادله کنید <i>« <a href="https://bumotors.ru/fa/chto-takoe-blog-i-kak-ego-sozdat-plyusy-i-minusy-svoego-bloga.html">شکل خالص</a>» </i>... نیاز به ارسال قطعات دست و پا گیر کد HTML به طور کامل حذف شده است.</p> ECMA-262 1999)، این فرمت مستقل از زبان در نظر گرفته می شود و تقریباً با هر زبان برنامه نویسی قابل استفاده است. برای بسیاری از زبان ها، کد آماده ای برای ایجاد و دستکاری داده های JSON وجود دارد. <h3>استفاده</h3><p>به دلیل مختصر بودن آن در مقایسه با XML، JSON ممکن است برای سریال سازی ساختارهای پیچیده مناسب تر باشد. اگر در مورد برنامه های کاربردی وب صحبت کنیم، در این زمینه، در وظایف تبادل داده ها هم بین مرورگر و سرور (AJAX) و هم بین خود سرورها (API) مناسب است.</p><p>از آنجایی که فرمت JSON زیر مجموعه ای از نحو است <a href="https://bumotors.ru/fa/chto-takoe-yazyk-javascript-globalnye-i-lokalnye-peremennye-tipy.html">زبان جاوا اسکریپت</a>سپس می توان آن را به سرعت با تابع eval () داخلی از حالت سریال خارج کرد. علاوه بر این، امکان درج توابع جاوا اسکریپت کاملاً کاربردی نیز وجود دارد. V <a href="https://bumotors.ru/fa/operator-vybora-if-v-yazyke-c-osnovy-php-cikl-for-primery-ispolzovaniya-logicheskih-operatorov.html">زبان پی اچ پی</a>از نسخه 5.2.0، پشتیبانی JSON به شکل توابع json_decode () و json_encode () در هسته گنجانده شده است که خود انواع داده های JSON را به انواع PHP مربوطه تبدیل می کنند و بالعکس.</p> <h3>نحو</h3><p>JSON -text یکی از دو ساختار (کدگذاری شده) است:</p><ol><li>مجموعه ای از جفت <i>ارزش کلیدی</i>... در زبان های مختلف، این به عنوان یک شی، رکورد، ساختار، فرهنگ لغت، جدول هش، فهرست کلیددار یا آرایه انجمنی پیاده سازی می شود. کلید فقط می تواند یک رشته باشد، مقدار می تواند هر شکلی باشد.</li> <li>مجموعه ای منظم از مقادیر در بسیاری از زبان ها، این به صورت آرایه، برداری، لیست یا دنباله اجرا می شود.</li> </ol><p>اینها ساختارهای داده جهانی هستند: به عنوان یک قاعده، هر مدرن <span>زبان برنامه نویسی</span>آنها را به هر شکلی پشتیبانی می کند. آنها دراز کشیدند <a href="https://bumotors.ru/fa/format-json-primer-i-opisanie-osnovy-raboty-s-json.html">چارچوب JSON</a>از آنجایی که برای تبادل داده بین آنها استفاده می شود <a href="https://bumotors.ru/fa/kak-sdelat-drugoi-yazyk-na-klaviature-kak-pomenyat-yazyk-na.html">زبانهای مختلف</a>برنامه نويسي.</p><p>ساختارها به عنوان مقادیر در JSON استفاده می شوند:</p><ol><li>یک شی یک مجموعه نامرتب از کلید است: جفت های مقدار محصور شده در پرانتزهای فرفری "()". کلید با یک رشته توصیف می شود، بین آن و مقدار یک نماد ":" وجود دارد. جفت های کلید-مقدار با کاما از یکدیگر جدا می شوند.</li> <li>یک آرایه (تک بعدی) مجموعه ای مرتب از مقادیر است. آرایه در پرانتز مربع "". مقادیر با کاما از هم جدا می شوند.</li> <li>این مقدار می تواند یک رشته، عدد، شی، آرایه، یکی از لفظ های واقعی، نادرست یا تهی باشد که دارای دو نقل قول است. که ساختارها را می توان درون یکدیگر تودرتو کرد.</li> <li>رشته مجموعه‌ای مرتب از کاراکترهای یونیکد صفر یا بیشتر است که درون آن قرار گرفته‌اند <a href="https://bumotors.ru/fa/kak-izmenit-vid-kavychek-s-pryamyh-na-dvoinye-bazovoe-redaktirovanie.html">نقل قول های دوگانه</a>... کاراکترها را می توان با استفاده از دنباله های فرار که با علامت معکوس "\" شروع می شود، مشخص کرد. <p>رشته بسیار شبیه به نوع داده ای با همین نام در زبان های C و جاوا است. این عدد نیز بسیار شبیه به عدد C یا جاوا است، با این تفاوت که فقط از فرمت اعشاری استفاده می شود. فاصله ها را می توان بین هر دو عنصر نحوی درج کرد.</p> </li> </ol><p>مثال زیر JSON را نشان می دهد - نمایشی از یک شی که یک شخص را توصیف می کند. شی شامل فیلدهای رشته ای از نام و نام خانوادگی، یک شی که آدرس را توصیف می کند، و یک آرایه حاوی لیستی از شماره تلفن است.</p><p>تکنیک های اساسی برای کار با JSON در جاوا اسکریپت عبارتند از:</p><ul><li>JSON.parse - اشیاء را از یک رشته در قالب JSON می خواند.</li> <li>JSON.stringify - اشیاء را به یک رشته JSON تبدیل می کند، زمانی که نیاز به انتقال داده از جاوا اسکریپت از طریق شبکه دارید استفاده می شود.</li> </ul><h3>1. مقدمه ای بر روش JSON.parse</h3><p>بیایید یک برنامه وب پایه تایزن ایجاد کنیم و نام آن را بگذاریم <i>json1</i>.</p><p>در فایل معرفی کنید <i>index.html</i>کد زیر:</p><p><!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <meta name="description" content="قالب پایه Tizen که توسط Tizen Web IDE تولید شده است"/> <title>


برنج. 27.2.

بیایید کد اسکریپت خود را کمی تغییر دهیم:


برنج. 27.3.

بیایید یک مورد جالب تر را در نظر بگیریم:


برنج. 27.4.

2. ایجاد یک شی از یک رشته JSON

این مثال از http://www.w3schools.com/js/js_validation.asp قرض گرفته شده است. بیایید یک پروژه ایجاد کنیم json2... در پرونده index.tmlبیایید کد زیر را وارد کنیم.

ایجاد شی از JSON String


برنج. 27.5.

3. کار با متد JSON.parse

مثال زیر از JSON.parse برای تبدیل رشته JSON به یک شی (پروژه json3).

Tizen Web IDE - Tizen - Tizen Basic Application


برنج. 27.6.

4. کار با توابع احیاگر

تابع Reviver اغلب برای تبدیل نمایش JSON رشته های تاریخ سازمان بین المللی استاندارد (ISO) به اشیاء تاریخ هماهنگ جهانی (UTC) استفاده می شود. این مثال از JSON.parse برای بی‌ثبات کردن رشته تاریخ ISO استفاده می‌کند. تابع dateReviver، اشیاء تاریخ را برای اعضای قالب بندی شده به صورت رشته تاریخ ISO برمی گرداند. یک مثال کمی تغییر یافته پیشنهاد شده است که از سایت https://msdn.microsoft.com/ru-ru/library/cc836466%28v=VS.94%29.aspx؟F = 255 و MSPPError = -2147217396 گرفته شده است. بیایید یک پروژه ایجاد کنیم json4.

Tizen Web IDE - Tizen - Tizen Basic Application

جیسون(Notation Object JavaScript) یک فرمت نمایش داده سبک وزن است که بر اساس زیر مجموعه ای از نحو جاوا اسکریپت، به طور خاص بر روی به معنای واقعی کلمهآرایه ها و اشیا JSON جایگزینی برای فرمت های سنتی (متن ساده یا XML) است که هنگام تبادل داده بین سرور و مشتری استفاده می شود. برخلاف زبان‌های سازگار با XML و XML که نیاز به تجزیه دارند، تعاریف JSON را می‌توان به سادگی در جاوا اسکریپت گنجاند. فرمت JSON توسط برنامه نویس داگلاس کراکفورد پیشنهاد شد.

شاید از راه دور بیایم، اما برای درک واقعی JSON، اجازه دهید ابتدا نحو آرایه‌ها و اشیاء را در نشانه‌گذاری تحت اللفظی جاوا اسکریپت درک کنیم (به یاد بیاوریم).

آرایه ها به صورت لفظی
یک آرایه در جاوا اسکریپت را می توان با استفاده از سازنده آرایه تعریف کرد، مانند:

Var aData = آرایه جدید ("رشته"، true، 43، null)؛

در جاوا اسکریپت، آرایه ها بدون تایپ هستند، بنابراین می توانند انواع مختلفی از داده ها را ذخیره کنند. در مثال، آرایه شامل یک رشته، یک بولی، یک عدد و یک مقدار تهی است.

آرایه ای که به عنوان یک کلمه توصیف شده است را می توان با استفاده از براکت های مربع تعریف کرد، در داخل - مقادیر عناصر آرایه، که با کاما از هم جدا شده اند. این همان چیزی است که همان آرایه به نظر می رسد، اما در نماد واقعی:

Var aData = ["string", true, 43, null];

با مشخص کردن نام آرایه و تعداد عنصر می توان به عناصر مجزا یک آرایه پرداخت.

هشدار (aData)؛ هشدار (aData)؛

اشیاء به صورت لفظی
اشیاء در جاوا اسکریپت با استفاده از سازنده Object تعریف می شوند، مانند:

Var oAuto = شیء جدید (); oAuto.firm = "آئودی"; oAuto.model = "A6"; oAuto.year = 2008; oAuto.price = 78000;

همان کد، اما در نماد تحت اللفظی به شکل زیر خواهد بود:

Var oAuto = ("شرکت": "آئودی"، "مدل": "A6"، "سال": 2008، "قیمت": 78000);

این کد یک شی با ویژگی های firm، مدل، سال و قیمت ایجاد می کند و به صورت زیر قابل دسترسی است:

هشدار (oAuto.model)؛ هشدار (oAuto.year)؛

اما می‌توانید از نحو آرایه‌ها نیز استفاده کنید و به ویژگی‌های یک شی به این صورت اشاره کنید:

هشدار (oAuto ["مدل"]); هشدار (oAuto ["سال"]);

در نمادگذاری تحت اللفظی، توصیف آرایه ها و اشیاء را می توان در داخل یکدیگر قرار داد، بنابراین ایجاد شی آرایهیا آرایه ای از اشیاء... این کد را بررسی کنید:

Var aAuto = [("شرکت": "BMW"، "مدل": "X5"، "سال": 2007، "قیمت": 99000)، ("شرکت": "Audi"، "مدل": "A6" ، "سال": 2008، "قیمت": 78000)، ("شرکت": "فولکس واگن"، "مدل": "Touareg 7L"، "سال": 2006، "قیمت": 45000)]؛

ما یک آرایه aAuto ایجاد کرده ایم که شامل سه شی است. با ترکیب سینتکس دسترسی به آرایه ها با سینتکس دسترسی به اشیا، سعی می کنیم سال ساخت ماشین دوم را بدست آوریم:

هشدار (aAuto.year)؛ // دریافت 2008

می توانید برعکس عمل کنید و یک شی از آرایه ها را توصیف کنید:

Var oAuto = ("شرکت": ["BMW"، "Audi"، "Volkswagen"]، "مدل": ["X5"، "A6"، "Touareg 7L"]، "سال" :، "قیمت": )

در این حالت ابتدا به شی و سپس به آرایه داخل آن اشاره می کنیم:

هشدار (oAuto.year)؛ // دریافت 2008

در اینجا چنین مقدمه طولانی است، اما اکنون انجام آن بسیار واضح تر خواهد بود. جیسون

جیسون- ترکیبی از آرایه ها و اشیاء و فقط برای ذخیره سازی داده ها در نظر گرفته شده است. در نتیجه، جیسوننمی تواند متغیرها را داشته باشد و هیچ گونه عملیاتی بر روی آنها اجازه نمی دهد. بیایید سعی کنیم مثال قبلی را با استفاده از نحو بنویسیم جیسون:

("شرکت": ["BMW"، "Audi"، "Volkswagen"]، "مدل": ["X5"، "A6"، "Touareg 7L"]، "سال" :، "قیمت" :)

توجه داشته باشیدکه نام متغیر و نقطه ویرگول وجود ندارد. انتقال چنین شیئی با استفاده از پروتکل HTTP بسیار سریع خواهد بود، زیرا حاوی حداقل کاراکتر است. پس از دریافت چنین داده‌هایی در سمت کلاینت و نوشتن آن در یک متغیر (مثلا sData)، رشته‌ای از اطلاعات را دریافت می‌کنیم.
توجه داشته باشید: دقیقاً یک رشته، نه یک شی یا یک شی با آرایه های تودرتو. با استفاده از تابع یک رشته را به یک شی تبدیل کنید eval ().

Var oAuto = eval ("(" + sData + ")");

این منجر به شیئی می شود که در بالا توضیح دادیم.

JSON از طریق XML
پس مزیت JSON نسبت به XML چیست؟

در اینجا ما منحصراً در مورد مزایا و معایب فقط از نقطه نظر سازماندهی تبادل داده در وب صحبت می کنیم.

این واقعیت که XML در مقایسه با JSON بسیار زائد است. بیایید این را با یک مثال ساده ببینیم. ما همان داده ها را در قالب XML و در قالب JSON نشان می دهیم.

بی ام و X5 2007 99000 آئودی A6 2008 78000 فولکس واگن Touareg 7L 2006 45000

این شکلی است که در قالب XML و در زیر - در قالب JSON به نظر می رسد:

("عمومی": ("ماشین": [("شرکت": "BMW"، "مدل": "X5"، "سال": 2007، "قیمت": 99000)، ("شرکت": "آئودی"، "مدل": "A6"، "سال": 2008، "قیمت": 78000)، ("شرکت": "فولکس واگن"، "مدل": "Touareg 7L"، "سال": 2006، "قیمت": 45000 )]))

استفاده كردن فرمت JSONبهره 42 بایت و بدون احتساب فضاها و حتی 86 بایت خواهد بود. و اگر به یاد داشته باشیم که داده ها با فرمت JSON نیازی به تجزیه اضافی در سمت کلاینت ندارند، مزیت JSON نسبت به XML از نظر انتقال داده از سرور به مشتری آشکار می شود ...

JSON (JavaScript Object Notation) فرمتی برای تبادل داده ها به صورت متنی است. به شما امکان می دهد ساختارهای داده پیچیده را به صورت سریالی منتقل کنید. این فرمت انتقال داده آنقدر محبوب شده است که از نسخه 5.2.0 توابعی برای پردازش داده ها در این فرمت به هسته PHP اضافه شده است. این بدان معنی است که نیازی به اتصال افزونه های اضافی نیست. قالب داده JSON برای انسان به خوبی درک شده است. علاوه بر این، این نوع تبادل داده به طور گسترده ای بین سرویس های مختلف API استفاده می شود. و با توسعه صحیح الگوریتم‌های تبادل اطلاعات، می‌توانید سرعت بسیار بالایی نسبت به مثلاً هنگام کار با داده‌ها در قالب XML داشته باشید.

ارسال داده

می‌توانید داده‌ها را در قالب JSON به دو روش ارسال کنید: یک درخواست GET یا POST با داده‌های رمزگذاری‌شده در متغیر GET یا POST تشکیل دهید، یا داده‌ها را در بدنه سند قرار دهید. در عمل معمولاً از گزینه دوم استفاده می شود.

توابع زیر برای ارسال داده مورد نیاز است:

  • رشته json_encode(مقدار ترکیبی [، گزینه های int = 0])

    پارامتر مقدار داده ای است که باید کدگذاری شود. هر نوع به جز نوع پشتیبانی می شود منبع... پارامتر گزینه ها حاوی یک بیت ماسک از مقادیر ارائه شده ممکن است (به جدول ثابت های JSON ارائه شده مراجعه کنید).

  • منبع stream_context_create (])

    این تابع برای ایجاد و برگرداندن یک زمینه جریان با گزینه های مشخص شده در پارامتر گزینه ها در نظر گرفته شده است. پارامتر گزینه های اختیاری باید از نوع آرایه انجمنی باشد. در ابتدا خالی است. دومین پارامتر اختیاری پارامترها نیز باید یک آرایه انجمنی با فرمت $ data ['name'] = مقدار باشد.

  • رشته file_get_contents(نام فایل رشته [، bool use_include_path [، زمینه منبع [، int offset [، int maxlen]]]]

    با استفاده از این تابع می توانید محتویات یک فایل را به صورت رشته ای دریافت کنید. پارامتر filename نام فایلی است که باید خوانده شود. در پارامتر use_include_path از PHP 5، می توانید از ثابت استفاده کنید FILE_USE_INCLUDE_PATHبرای یافتن فایل در مسیر include. پارامتر context یک منبع زمینه ایجاد شده با استفاده از stream_context_create () را نشان می دهد. در صورت تلاش ناموفق برای باز کردن فایل، مقدار برگردانده می شود نادرست... پارامتر offset حاوی افستی است که از آن می توان خواندن داده ها را شروع کرد. پارامتر maxlen اندازه داده های دریافتی را مشخص می کند.

    توجه داشته باشید: هنگام کار با جریان های راه دور، افست مشخص نشده است.

در زیر نمونه ای از ارسال داده با فرمت JSON آورده شده است:

// داده برای ارسال درخواست $ = آرایه ("StartDate" => "2013-10-10", "EndDate" => "2013-10-10", "IDS" => آرایه (1,2,3,4 ، 5،6،7))؛ // گزینه هایی را برای زمینه جریان مشخص کنید $ options = آرایه ("http" => آرایه ("method" => "POST", "header" => "Content-Type: application / json; charset = utf-8 \ r \ n "," content "=> json_encode ($ درخواست))); // ایجاد زمینه جریان $ context = stream_context_create (گزینه های $); // ارسال داده و دریافت نتیجه echo file_get_contents ("http://test.ru/json.php"، 0، $ context);

از یک ساختار داده بداهه متشکل از تاریخ شروع و پایان و آرایه ای از اعداد برای برخی رکوردهای مشروط استفاده می کند. توجه داشته باشید که در هدر درخواست نوع محتوانوع آن "application / json" است.

بازیابی داده ها

برای دریافت داده های ارسالی به روشی که در بالا توضیح داده شد، باید داده ها را از جریان ورودی خوانده شود. php: // ورودی”.

توابع مورد استفاده برای پذیرش داده ها:

  • مختلط json_decode(رشته json [، bool assoc = false [، int depth = 512 [، int options = 0]]]

    این تابع یک رشته JSON را رمزگشایی می کند. پارامتر json رشته ای را برای رمزگشایی مشخص می کند. پارامتر assoc کنترل می کند که آیا داده های برگشتی به یک آرایه انجمنی تبدیل شوند یا خیر. اگر چنین نیازی وجود دارد، باید مقدار این پارامتر را مشخص کنید درست است، واقعی... پارامتر عمق عمق بازگشت را نشان می دهد. و آخرین پارامتر چهارم، گزینه ها، حاوی بیت ماسک گزینه ها برای رمزگشایی است. در حال حاضر فقط پشتیبانی می شود JSON_BIGINT_AS_STRING(اعداد صحیح بزرگ به طور پیش فرض به شناور تبدیل می شوند)

  • منبع باز کردن(نام فایل رشته، حالت رشته [، bool use_include_path [، زمینه منبع]])

    یک فایل را باز می کند و یک توصیفگر فایل را برمی گرداند. پارامتر filename منبعی با نام است که به یک فایل اشاره می کند. پارامتر mode نوع دسترسی به فایل را مشخص می کند (به جدول با لیست حالت های ممکن برای fopen () مراجعه کنید). سپس دو وجود دارد پارامترهای اختیاریاینها عبارتند از: use_include_path و context. هنگامی که پارامتر use_include_path را روی آن تنظیم می کنید درست است، واقعییا 1 و به شرطی که منبع نام برده شده باشد مسیر نسبی، فایلی که باید باز شود در لیست دایرکتوری های استفاده شده توسط توابع جستجو می شود عبارتند ازو نیاز... در عمل، این پارامتر عملا استفاده نمی شود. پارامتر context برای مشخص کردن زمینه منبع استفاده می شود.

  • رشته stream_get_contents(دسته منبع [، int maxlen = -1 [، int offset = -1]])

    این تابع به شما امکان می دهد محتوای یک جریان را به صورت رشته دریافت کنید. پارامتر handle یک منبع رشته است. پارامتر maxlen شامل بیشترین مقداربایت برای خواندن به طور پیش فرض روی -1 تنظیم شده است که نشان دهنده دریافت تمام داده ها است. پارامتر offset حاوی افستی است که از آن می توان خواندن داده ها را شروع کرد. به طور پیش فرض نیز روی -1 تنظیم شده است، به این معنی که خواندن از موقعیت شروع انجام می شود.

در زیر نمونه ای از دریافت داده ها با فرمت JSON در سمت سرور آورده شده است:

// جریان ورودی را برای خواندن $ f = fopen باز کنید ("php: // input", "r"); // دریافت محتوای جریان $ data = stream_get_contents ($ f); if ($ data) (// کد پردازش print_r (json_decode ($ data))؛)

ساختار داده به دست آمده:

شیء StdClass (=> 2013-10-10 => 2013-10-10 => آرایه (=> 1 => 2 => 3 => 4 => 5 => 6 => 7))

توجه داشته باشید: باید این نکته را در نظر گرفت که برای کار با فرمت JSON، داده ها باید در کدگذاری utf-8 باشند.

JSON ثابت هایی را برای تابع json_encode () ارائه کرد

JSON_HEX_TAG (عدد صحیح) همه در \ u003C و \ u003E کدگذاری شده اند. از PHP 5.3.0 در دسترس است.
JSON_HEX_AMP (عدد صحیح) همه و در \ u0026 کدگذاری شده اند. از PHP 5.3.0 در دسترس است.
JSON_HEX_APOS (عدد صحیح) همه کاراکترها در \ u0027 کدگذاری می شوند. از PHP 5.3.0 در دسترس است.
JSON_HEX_QUOT (عدد صحیح) همه کاراکترها در \ u0022 کدگذاری شده اند. از PHP 5.3.0 موجود است.
JSON_FORCE_OBJECT (عدد صحیح) هنگام استفاده از آرایه غیر انجمنی، یک شی را به جای آرایه منتشر کنید. این زمانی مفید است که برنامه یا کد دریافت کننده انتظار یک شی را داشته باشد یا آرایه خالی باشد. از PHP 5.3.0 در دسترس است.
JSON_NUMERIC_CHECK (عدد صحیح) رشته های حاوی اعداد را به عنوان اعداد رمزگذاری کنید. از PHP 5.3.3 در دسترس است.
JSON_BIGINT_AS_STRING (عدد صحیح) اعداد صحیح بزرگ را به عنوان معادل رشته آنها کد می کند. از PHP 5.4.0 در دسترس است.
JSON_PRETTY_PRINT (عدد صحیح) استفاده کنید کاراکترهای فضای خالیدر داده های برگشتی آن را فرمت کنید. از PHP 5.4.0 در دسترس است.
JSON_UNESCAPED_SLASHES (عدد صحیح) فرار نکن /. از PHP 5.4.0 در دسترس است.
JSON_UNESCAPED_UNICODE (عدد صحیح) چند بایت را رمزگذاری نکنید کاراکترهای یونیکد(به طور پیش فرض آنها به صورت \ uXXXX کدگذاری می شوند). از PHP 5.4.0 در دسترس است.

فهرست حالت های ممکن برای fopen () با استفاده از حالت

'R' فایل فقط خواندنی را باز می کند. نشانگر را در ابتدای فایل قرار می دهد.
'R +' فایلی را برای خواندن و نوشتن باز می کند. نشانگر را در ابتدای فایل قرار می دهد.
'W' فایلی را فقط برای نوشتن باز می کند. نشانگر را در ابتدای فایل قرار می دهد و طول فایل را به صفر می رساند. اگر فایل وجود نداشته باشد، سعی می کند آن را ایجاد کند.
"W +" فایلی را برای خواندن و نوشتن باز می کند. نشانگر را در ابتدای فایل قرار می دهد و طول فایل را به صفر می رساند. اگر فایل وجود نداشته باشد، سعی می کند آن را ایجاد کند.
'آ' فایلی را فقط برای نوشتن باز می کند. نشانگر را در انتهای فایل قرار می دهد. اگر فایل وجود نداشته باشد، سعی می کند آن را ایجاد کند.
"A +" فایلی را برای خواندن و نوشتن باز می کند. نشانگر را در انتهای فایل قرار می دهد. اگر فایل وجود نداشته باشد، سعی می کند آن را ایجاد کند.
'ایکس' ایجاد می کند و فقط برای نوشتن باز می شود. نشانگر را در ابتدای فایل قرار می دهد. اگر فایل از قبل وجود داشته باشد، fopen () با شکست مواجه می شود، FALSE را برمی گرداند و یک خطای سطح E_WARNING ایجاد می کند. اگر فایل وجود نداشته باشد، سعی می کند آن را ایجاد کند. این معادل مشخص کردن پرچم‌های O_EXCL | O_CREAT برای فراخوانی سیستم باز داخلی (2) است.
"X +" ایجاد می کند و برای خواندن و نوشتن باز می کند. در غیر این صورت رفتاری مشابه "x" دارد.
'C' فایلی را فقط برای نوشتن باز می کند. اگر فایل وجود نداشته باشد، ایجاد می شود. اگر فایل وجود داشته باشد، بر خلاف «w» کوتاه نمی‌شود، و فراخوانی این تابع خطایی ایجاد نمی‌کند (همانطور که در مورد «x» وجود دارد). نشانگر فایل روی ابتدای فایل تنظیم می شود. اگر می‌خواهید قبل از تغییر، یک فایل را قفل کنید (به flock () مراجعه کنید، می‌تواند مفید باشد، زیرا استفاده از «w» می‌تواند فایل را قبل از به دست آوردن قفل کوتاه کند (اگر می‌خواهید فایل را کوتاه کنید، می‌توانید از ftruncate () بعد از آن استفاده کنید. درخواست قفل).
"C +" فایلی را برای خواندن و نوشتن باز می کند. در غیر این صورت همان رفتار "c" را دارد.

مقالات مرتبط برتر