JSON چیست و نحوه استفاده آن در دلفی Delphi و پی اچ پی PHP

سلام

به سایت 4xmen خوش آمدید بازم باعث افتخار منه که پیش عزیزان دیگه این سایت دارم فعالیت می کنم.

بحث پیش روی امروز استفاده از JSON  هستش، اول از همه بهتر هستش ما ماهیت  اطلاعات فرآوری شده رو بررسی کنیم ، زمانی فرارسید که برنامه نویسان زبان های مختلف قصد این رو کردن اطلاعات رو ما بین زبان های هم دیگر رد بدل کنند و این به یه دغدغه تبدیل شد ، برای این کار باید به برنامه خوب و یک استاندارد تعریف میشد، که همه به اون استناد کنند و بتونن اطلاعات رو جا به جا کنند، خب معروف ترین و پر مصرف ترین این استاندراد ها XML هستش که همه ی شما با اون آشنایی دارید و حداقل یک بار اونو دیدید.

اما Javascript چون یه زبان اسکریپت نویسی هستش و مستقل برای خودش عمل نمی کنه یعنی سمت کلاینت (کاربر) هستش برای همین نیاز شدیدی داره که با زبان های سمت سرور ارتباط برقرار کنه از همین رو یه استاندارد جدید هم عرضه شد به نام JSON تعریف JSON طبق اونچه سایت مرجعش نوشته:

جی‌سان یا JSON (JavaScript Object Notation) یک فرمت تبادل داده سبک (lightweight) می‌باشد که خواندن و نوشتن آن برای انسان و تولید و پارس کردن آن برای ماشین‌ها آسان است. این زبان بر مبنای یک زیر مجموعه از زبان برنامه‌نویسی JavaScript ، استاندارد ECMA-262 ویرایش سوم – دسامبر 1999‌، است. JSON بصورت متنی (text) بوده و کاملاً مستقل از زبان بکار رفته است، اما از قوانینی استفاده می‌کند که برای برنامه‌نویسان زبان‌های خانواده C (شامل C ، C++ ، Java ، JavaScript ، Perl ، Python ، و بسیاری زبان‌های دیگر) آشنا می‌باشد.‌ این خصوصیات JSON را یک زبان تبادل‌داده‌ای ایده‌آل کرده است.

JSON بر اساس دو ساختار ساخته شده:

  • یک مجموعه از زوج‌های نام/ارزش (name/value). در زبان‌های گوناگون این ساختار یک شیء (object) ، ساختار (struct) ، دیکشنری (dictionary) ، جدول مخلوط (hash table) ، لیست کلیددار (keyed list) یا آرایه انجمنی (associative array) شناخته می‌شود. • یک لیست منظم از ارزش‌ها. در بسیاری از زبان‌ها این ساختار یک آرایه ( array) ، بردار (vector) ، لیست (list) ، یا دنباله (sequence) شناخته می‌شود.
  • اینها ساختار داده‌های عمومی هستند. همه زبان‌های برنامه‌نویسی مدرن یکی از آنها را پشتیبانی می‌کنند. منطقی است که یک فرمت داده قابل استفاده توسط زبان‌های برنامه‌نویسی مختلف بر مبنای این ساختارها باشد.

در JSON از فرم‌های زیر استفاده می‌شود:

یک شیء (object) یک مجموعه نامنظم از زوج‌های نام/ارزش است. یک object‌ با { (آکولاد باز) شروع، و با } (آکولاد بسته) تمام می‌شود. در انتهای هر نام یک : (دو نقطه) قرار می‌گیرد و زوج‌های نام/ارزش با , (ویرگول) جدا می‌شوند.

object (1)

 

یک array یک مجموعه (collection) منظم از ارزش‌ > (value) ها است. یک array با [ (براکت باز) شروع، و با > ] (براکت بسته) تمام می‌شود. ارزش‌ها توسط , (ویرگول) از هم جدا می‌شوند.

array

 

یک value می‌تواند یک رشته (string) داخل  ، یا یک عدد ، یا  true یا  false یا  null ، یا یک object یا یک array باشد. این ساختارها می‌توانند تو در تو باشند.

value

 

خب این توضحاتش بودش برای توضحات تکمیلی به این آدرس مراجعه کنید.

اما چطور از JSON استفاده کنیم.

PHP

ابتدا در مورد PHP توضیح میدیم چون هم ساده تر هستش و هم Open Source هستش.

در php استفاده JSON بسیار ساده هستش چون PHP از associative array پشتیبانی کامل داره حالا شاید براتون سوال بشه associative array چیست به زبان ساده تو یک جمله بخوایم توضیح بدیم این هستش که در آرایه های php در key ها ما فقط مجبور به استفاده از عدد نیستیم و به سادگی میتونیم حتی string هم به عنوان کلید آرایه در نظر بگیریم و حالا برای استفاده از JSON زمانی که ما آرایه ای رو می خوایم به رشته تبدیل کنیم و JSON کنیم به سادگی به یه خط کد امکان پذیر هستش برای مثال:

خب کد بالا اول ما آرایه رو تعریف می کنیم و بعد با تابع  json_encode در پاسخ به ما :

رو میده و برعکس تبدیل string json به برعکس با تابع json_decode به شکل زیر :

ونتیجه مانند زیر میشه :

 

Delphi

حالا نوبتی هم باشه نبوت به دلفی میرسه در دلفی با وجود عدم پشتیبانی از آرایه های associative به صورت مستقیم و عدم پشتیبانی مستقیم از کتابخانه استفاده کنیم از کتابخانه های زیادی من خودم استفاده کردم از جمله superObject و dwsJSON که یکی از یکی پر درد سر تر بودند و عمر ما تلف شد تا به نتیجه فعلی برسیم که کتابخانه ایده آل چیست و اون رو معرفی می کنیم خدمتتون:

کتباخانه LkJSON کتابخانه فوق العاده ای هستش که روی تمام ورژن های دلفی هم جواب میده و برای دانلود یا سرچ کنید و یا به آخر همین نوشته مراجعه کنید این نوشته در زمان نسخه   LkJSON v1.07 این کتابخانه و Delphi XE5 نگاشته شده است و برای استفاده از این به شکل ساده از مثال های خودش استفاده می کنیم برای تبدیل سری متغییر ها به JSON این روش کار سازه البته با فراخونی کتابخانه دانلود شده :

روند کار کد مشخص هستش ما از کلاس TlkJSONobject  یک نسخه می سازیم و سپس با تابع add خانه بهش اضافه می کنیم، و کد ها کامنت دارند و کاملا مشخص هستند واما برای برعکس این ماجرا نیاز هستش شما به کد زیر توجه کنید:

 

در کد بالا ما رشته JSON رو داریم و با کد :

اون رو آماده می کنیم و با روش زیر خانه های آن رو بدست میاریم و داخل یک متغییر از نوع TlkJSONstring میریزم تا قابل نمایش باشه:

به همین سادگی و به همین خوشمزگی متونید نمایشش بدین:

خب امیدوارم که بار دیگر 4xmen تنوسته باشه به شما کمک کنه فایل هاش رو دانلود کنید و اولین مثال JSON خودتون رو بنویسید:

lkJSON-1.07

‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

More Posts

5 thoughts on “JSON چیست و نحوه استفاده آن در دلفی Delphi و پی اچ پی PHP”

  1. با عرض سلام خدمت دوستان
    باید بگم که در حال حاضر دلفی از JSON به صورت رسمی پشتیبانی می کند. مجموعه کلاس ‌های مرتبط رو می تونید در فضای نام Data.DBXJSON پیدا کنید.

    با تشکر

  2. {
    “Id”: “1”,
    “Name”: “پودر ماشین لباسشویی طلایی”,
    “CategoryId”: “1”,
    “Asset”: “300”,
    “Price”: “6500”,
    “CustomerPrice”: “6300”,
    “Tags”: “پودر،لباسشویی،پاکشوما”,
    “InBox”: “12”,
    “Code”: “456231”,
    “Image”: “p1.png”,
    “Min”: “20”,
    “IsDelete”: “0”
    },
    {
    “Id”: “2”,
    “Name”: “پودر دستی 200 گرمی”,
    “CategoryId”: “1”,
    “Asset”: “450”,
    “Price”: “5300”,
    “CustomerPrice”: “5000”,
    “Tags”: “پودر،دستی”,
    “InBox”: “12”,
    “Code”: “456232”,
    “Image”: “p2.png”,
    “Min”: “24”,
    “IsDelete”: “0”
    },
    {
    “Id”: “3”,
    “Name”: “مایع دستشویی کوچک”,
    “CategoryId”: “1”,
    “Asset”: “200”,
    “Price”: “7200”,
    “CustomerPrice”: “7100”,
    “Tags”: “مایع،دستشویی”,
    “InBox”: “6”,
    “Code”: “456233”,
    “Image”: “p3.png”,
    “Min”: “12”,
    “IsDelete”: “0”
    },
    {
    “Id”: “4”,
    “Name”: “همبرگر 60 درصد 5 عددی”,
    “CategoryId”: “2”,
    “Asset”: “140”,
    “Price”: “9500”,
    “CustomerPrice”: “9200”,
    “Tags”: “همبرگر،کاله”,
    “InBox”: “10”,
    “Code”: “300150”,
    “Image”: “p4.png”,
    “Min”: “10”,
    “IsDelete”: “0”
    },
    {
    “Id”: “5”,
    “Name”: “بستنی 1 لیتری وانیلی”,
    “CategoryId”: “2”,
    “Asset”: “500”,
    “Price”: “4200”,
    “CustomerPrice”: “4000”,
    “Tags”: “بستنی،بزن،کاله”,
    “InBox”: “6”,
    “Code”: “300151”,
    “Image”: “p5.png”,
    “Min”: “6”,
    “IsDelete”: “0”
    },
    {
    “Id”: “6”,
    “Name”: “پفک موتوری بزرگ”,
    “CategoryId”: “3”,
    “Asset”: “200”,
    “Price”: “2000”,
    “CustomerPrice”: “1800”,
    “Tags”: “پفک،موتوری،چی توز”,
    “InBox”: “6”,
    “Code”: “300152”,
    “Image”: “p6.png”,
    “Min”: “7”,
    “IsDelete”: “0”
    },
    {
    “Id”: “7”,
    “Name”: “چیپس سرکه ای”,
    “CategoryId”: “3”,
    “Asset”: “300”,
    “Price”: “2200”,
    “CustomerPrice”: “2000”,
    “Tags”: “چیپس”,
    “InBox”: “12”,
    “Code”: “300153”,
    “Image”: “p7.png”,
    “Min”: “1”,
    “IsDelete”: “0”
    }
    من همچین مجموعه ای دارم چگونه پیمایش کنم در دلفی برای خواندن آن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *