# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه > آموزش: کار با JSONObject در دلفی

## Mask

با سلام.
در این پست قصد دارم تا در مورد 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

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

----------


## Mask

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

----------


## moha_h2007

سلام اگه لطف کنید و یک  برنامه نوشته شده را در اختیار دوستان و بنده قرار دهید ممنون می شوم

----------

