ورود

View Full Version : آموزش: کار با JSONObject در دلفی



Mask
سه شنبه 30 شهریور 1395, 18:34 عصر
با سلام.
در این پست قصد دارم تا در مورد JSONObject توضیحاتی رو خدمت دوستان بدهم.بوسیله کامپوننتهای اورجینال دلفی و بدون نیاز به ابزار جانبی.
با در نظر گرفتن اینکه ،دوستان اطلاعات کاملی در مورد فرمت جیسون دارند شروع میکنیم:
برای شروع از کامپوننت IdHttp برای اتصال به سرور و با متد Get دیتایی رو در قالب Json دریافت میکنیم.

var ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
try
IdHTTP1.get('http://33.226.35.68/adminpanel/www.php', ms);
ms.Position := 0;
Memo1.Lines.LoadFromStream(ms);
finally
ms.Free;
end;
خوب الان سرور دیتایی رو به شکل زیر، برای ما ارسال و ما اونو در Memo نمایش میدیم:

{ "status": 1,
"data": [
{
"id": "1",
"username": "\u0633\u06cc\u062f \u062d\u0633\u06cc\u0646 \u0645\u0648\u0633\u0648\u06cc",
"is_online": "1",
"server_id": "2",
"time": "12:45:63"
},
{
"id": "2",
"username": "\u0639\u0644\u06cc \u0639\u0628\u0627\u0633\u06cc",
"is_online": "1",
"server_id": "7",
"time": "12:45:63"
},
{
"id": "3",
"username": "\u062a\u0633\u062a ",
"is_online": "0",
"server_id": "7",
"time": "12:45:63"
},
{
"id": "4",
"username": "\u062a\u0633\u062a \u0634\u0645\u0627\u0631\u0647 2",
"is_online": "0",
"server_id": "2",
"time": "9:05:63"
},
{
"id": "5",
"username": "\u0627\u0635\u063a\u0631 \u06a9\u0627\u0638\u0645\u06cc",
"is_online": "1",
"server_id": "7",
"time": "12:45:63"
}
],
"totalItems": "5"
}

در این مرحله با دستورات زیر ،آبجکتی از نوع Json ساخته و استرینگ دریافتی رو در اون میریزیم . و بصورت نردبانی از بالا به پایین پیمایش میکنیم.

LJsonObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetByte s(Memo1.Text), 0) as TJSONObject; try
LRows := LJsonObj.get('data').JsonValue;
for i := 0 to TJSONArray(LRows).Size - 1 do
begin
LElements := TJSONObject(TJSONArray(LRows).get(i)).get('usernam e').JsonValue;
ShowMessage(LElements.Value);
end;
finally
LJsonObj.Free;
end;
در کد بالا مقدار LRows میشه سر ایتم جیسون ما که مقدار data رو داره. به همین روش در مقادیری که چند سر ایتم دارند،میتونید پیشمایش کنیم.
در مرحله بعدی بوسیله LElements ایتمها رو لود و با قرار دادن کلید مثلا username به مقدار داخلی ایتمها میرسیم.
در صورت تو در تو بودن این روال میتوان این مراحل را بصورت تو در تو پیمایش کرد.
امیدوارم که بدرد دوستان بخوره.روز خوش.

khoshblagh
چهارشنبه 31 شهریور 1395, 06:09 صبح
با تشکر از شما و سایر دوستانی که سعی در آموزش افراد مبتدی همچون بنده را دارند
جناب ماسک، من به تازگی با ساختار JSON آشنا شدم. با توضیخات جنابعالی روش استفاده هم تا حدودی آشنا شدم. در صورت امکان با مثالهایی در مورد استفاده عملی آن ( اینکه با JSON چه کارهایی را میتوان در شبکه انجام داد) به فهم من در این مقوله کمک نمائید. متشکرم:خجالت:

Mask
پنج شنبه 01 مهر 1395, 10:15 صبح
سلام
JSON، مخفف کلمه JavaScript Object Notation بوده و یک استاندارد باز است که با ساختاری خوانا برای انسان و هم ماشین، می‌توان اطلاعات و داده‌های مختلف از جمله داده‌های یک دیتابیس را با استفاده از آن، بین عوامل مختلف مثلاً مرورگر کاربر ، برنامه ها و اپلیکیشن ها و یا بین یک وب سرویس و یک کلاینت ،منتقل کرد یا در فضای ذخیره سازی‌ای، آن را ذخیره نمود.
برای مثال : میتونم در دقدقه جدید ارتباط با تلگرام مثال زد.زمانی که با وب سرویسهای تلگرام ارتباط برقرار میکنید خروجی رو به فرمت جیسون برمیگرده و شما در برنامه باید به شکلی که کاربر پسند باشه تبدیلش کنید. که کدهای بالا به شما کمک میکنه.

moha_h2007
چهارشنبه 12 آبان 1395, 10:28 صبح
سلام اگه لطف کنید و یک برنامه نوشته شده را در اختیار دوستان و بنده قرار دهید ممنون می شوم