Delphi JSON Class Örnek

Delphi ile json işlemlerinde class oluşturarak uygulamaya dahil edilmesi ve kullanımı

öncelikle bir json formatında dosyaya ihtiyacımız var bunun https://www.json-generator.com/ adresinden bir json oluşturacağım

generate butonuna basarak json oluşturma işlemini tamamlıyorum ve dowloand JSON file butonu ile dosyayı indiriyorum

dosyamı indirdikten sonra https://jsontodelphi.com/ adresinden oluşturmus olduğum Json dosyama uygun bir şekilde class oluşturmasını istiyorum burada json verilerimizi ekliyoruz ve generate butonuna basıyoruz

Json class ımız oluşturduktan sonra aşağıdaki şekilde pencere açılıyor ve classlarımızı indiriyoruz

Dosyalarımızı indirip kaydettikden sonra Delphi de yeni bir uygulama oluşturup classlarımızı projemize ekliyoruz

projemize ekledikten sonra uses satırına bu iki class ı ekliyerek işlemlere başlıyabiliriz

unit AnaFormU;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm3 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;



implementation

{$R *.dfm}

uses Pkg.Json.DTO, RootUnit;

end.

projedeki kodlarımız bu şekilde olması gerekli dosyalarımızı ekledikten sonra

daha sonra forma bir adet memo ve bir adet buton ekliyorum. Bu kullanım isteğine göre direk dosyayı da okuyup alabilirsiniz farklı yöntemlerde kullanılabiliriz.

eklediğim memo nesnesine json verimi ekliyorum

procedure TForm3.Button1Click(Sender: TObject);
var
  JSonRoot : TRootDTO;
  I: Integer;
  Y: Integer;
begin
  JSonRoot := TRootDTO.Create;
  try
    JSonRoot.AsJson := Memo1.Text;
    For I := 0 to JSonRoot.Items.Count -1 do // ana root un altındaki veriler için kurulan döngü
    Begin
      ShowMessage(JSonRoot.Items[I].About);

      For Y := 0 to JSonRoot.Items[I].Friends.Count -1 do  // alt kırılımdaki veriler için kurulan döngü
      Begin
         ShowMessage(JSonRoot.Items[I].Friends.Items[Y].Name);
      End;
    End;
  finally
    JSonRoot.Free;
  end;
end;

butonumuz altında eklediğim kodlar ile json nesnelerine istediğimiz gibi ulaşabiliriz ve buradan sonra hangi işlemleri yaptırmak istiyorsak o kodları yazıp istediğimiz gibi kullanabiliriz.

Rest yönteminde de aynı yapı kullanılabilir.

örnek proje dosyalarını indirmek için : https://disk.yandex.com.tr/d/vNHwOxFThIMbgQ

Json Dosya

[
  {
    "_id": "609f90fdb6183a5e4b5f9c47",
    "index": 0,
    "guid": "52597634-ea2b-4977-a4cf-4ee6283cb035",
    "isActive": false,
    "balance": "$3,217.24",
    "picture": "http://placehold.it/32x32",
    "age": 33,
    "eyeColor": "blue",
    "name": "Cummings Mcgee",
    "gender": "male",
    "company": "FUELTON",
    "email": "cummingsmcgee@fuelton.com",
    "phone": "+1 (870) 434-2176",
    "address": "235 Linwood Street, Coloma, Northern Mariana Islands, 8966",
    "about": "Ut et dolor mollit aliquip et aute labore ea ut exercitation amet occaecat ex. Laboris sunt mollit nulla mollit est ea excepteur sint ex dolore id aliqua. Non laborum ipsum sit reprehenderit ullamco. Culpa velit ullamco aute dolor. Velit sunt incididunt amet elit consectetur excepteur amet ex mollit eu sunt eiusmod.\r\n",
    "registered": "2018-12-28T11:52:08 -03:00",
    "latitude": -44.755947,
    "longitude": 6.985219,
    "tags": [
      "labore",
      "eiusmod",
      "magna",
      "adipisicing",
      "occaecat",
      "consectetur",
      "id"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Taylor May"
      },
      {
        "id": 1,
        "name": "Zimmerman Conner"
      },
      {
        "id": 2,
        "name": "Casey Howell"
      }
    ],
    "greeting": "Hello, Cummings Mcgee! You have 5 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd768c4ddf28327448",
    "index": 1,
    "guid": "bf240ca4-5264-4b98-8c83-1e1f2271022f",
    "isActive": true,
    "balance": "$2,203.26",
    "picture": "http://placehold.it/32x32",
    "age": 39,
    "eyeColor": "green",
    "name": "Chandler Richards",
    "gender": "male",
    "company": "LUNCHPAD",
    "email": "chandlerrichards@lunchpad.com",
    "phone": "+1 (863) 596-2946",
    "address": "842 Cumberland Walk, Barclay, Wisconsin, 5437",
    "about": "Ea eu ullamco nostrud laborum eu id elit sint velit. Aute cillum veniam sit sunt. Commodo do non adipisicing in duis minim ut ullamco. Dolore irure fugiat quis officia ad laboris quis incididunt. Id enim nisi irure Lorem. Sunt cillum minim ipsum consequat sunt voluptate ex ullamco ea fugiat labore commodo culpa. Magna nisi veniam non laborum dolore quis laboris amet proident ipsum amet est velit.\r\n",
    "registered": "2016-07-05T03:43:22 -03:00",
    "latitude": -78.387974,
    "longitude": 122.367721,
    "tags": [
      "pariatur",
      "est",
      "sint",
      "nisi",
      "ex",
      "proident",
      "ipsum"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Brandi Cervantes"
      },
      {
        "id": 1,
        "name": "Bird Taylor"
      },
      {
        "id": 2,
        "name": "Shields Lynch"
      }
    ],
    "greeting": "Hello, Chandler Richards! You have 4 unread messages.",
    "favoriteFruit": "banana"
  },
  {
    "_id": "609f90fd565c87fb4bc0cf08",
    "index": 2,
    "guid": "48d47780-50e6-40f7-be71-11288b87cd8f",
    "isActive": false,
    "balance": "$3,285.38",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "blue",
    "name": "Noble Gallagher",
    "gender": "male",
    "company": "REALMO",
    "email": "noblegallagher@realmo.com",
    "phone": "+1 (880) 492-2817",
    "address": "946 Central Avenue, Blandburg, Michigan, 2916",
    "about": "Sunt officia qui nulla aute cillum. Irure aliqua do enim do irure dolor tempor. Aute aliquip consectetur deserunt sint tempor aute commodo ea consectetur pariatur adipisicing ullamco et velit. Qui aliqua aliqua minim elit est laboris veniam duis occaecat consectetur. Qui proident laborum culpa consequat nulla elit sit anim consequat. Ea excepteur elit nulla nisi est ipsum esse commodo Lorem voluptate. Incididunt nisi minim eiusmod aliqua.\r\n",
    "registered": "2014-02-04T01:52:38 -02:00",
    "latitude": -81.255892,
    "longitude": -125.918893,
    "tags": [
      "sunt",
      "magna",
      "sunt",
      "consequat",
      "pariatur",
      "esse",
      "non"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Petra Waters"
      },
      {
        "id": 1,
        "name": "Wiley James"
      },
      {
        "id": 2,
        "name": "Emerson Fulton"
      }
    ],
    "greeting": "Hello, Noble Gallagher! You have 3 unread messages.",
    "favoriteFruit": "strawberry"
  },
  {
    "_id": "609f90fd5f4cc2c9fa433416",
    "index": 3,
    "guid": "a2ee1e27-e694-414a-9197-1b0fc3f83e84",
    "isActive": true,
    "balance": "$1,092.75",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "blue",
    "name": "Edna Head",
    "gender": "female",
    "company": "CALLFLEX",
    "email": "ednahead@callflex.com",
    "phone": "+1 (848) 598-3042",
    "address": "718 Crooke Avenue, Dargan, Montana, 4841",
    "about": "Eiusmod ut sunt duis reprehenderit velit id cillum minim. Commodo labore eu nulla ut proident dolor. Culpa reprehenderit elit proident eu officia anim dolore ut aute ipsum reprehenderit laborum enim. Nulla proident esse occaecat incididunt qui proident voluptate esse. Irure aliqua nisi in magna consectetur pariatur eiusmod aliquip est tempor. Lorem mollit eu reprehenderit nulla fugiat.\r\n",
    "registered": "2016-12-08T04:03:57 -03:00",
    "latitude": -55.840006,
    "longitude": 123.928552,
    "tags": [
      "ea",
      "nostrud",
      "occaecat",
      "occaecat",
      "laborum",
      "ipsum",
      "anim"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Norton Boyle"
      },
      {
        "id": 1,
        "name": "Gena Spears"
      },
      {
        "id": 2,
        "name": "Billie Franks"
      }
    ],
    "greeting": "Hello, Edna Head! You have 5 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd8b0843359e1aec3d",
    "index": 4,
    "guid": "f6203fa2-8663-4839-8f6f-057b23666e66",
    "isActive": true,
    "balance": "$2,409.46",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "brown",
    "name": "Holden Dale",
    "gender": "male",
    "company": "STRALOY",
    "email": "holdendale@straloy.com",
    "phone": "+1 (888) 536-3882",
    "address": "692 Russell Street, Canby, Wyoming, 8722",
    "about": "Est sint laboris labore et cillum velit Lorem excepteur id labore adipisicing incididunt. Mollit mollit aute ipsum exercitation exercitation elit non Lorem ipsum laborum anim. Non incididunt eu qui consequat elit ea cillum consectetur aute minim do cillum minim aute. Laborum incididunt id nisi voluptate in. Duis est esse mollit proident. Dolor consequat ut non magna dolore.\r\n",
    "registered": "2015-11-08T12:25:28 -03:00",
    "latitude": 78.775663,
    "longitude": -132.169324,
    "tags": [
      "consectetur",
      "commodo",
      "labore",
      "ea",
      "incididunt",
      "tempor",
      "excepteur"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Snider Koch"
      },
      {
        "id": 1,
        "name": "Nina Mcknight"
      },
      {
        "id": 2,
        "name": "Clay Bullock"
      }
    ],
    "greeting": "Hello, Holden Dale! You have 2 unread messages.",
    "favoriteFruit": "banana"
  },
  {
    "_id": "609f90fd7da5851dc6d4e963",
    "index": 5,
    "guid": "23d4bb4e-70ab-4c5e-99d0-98a7f9d25bce",
    "isActive": false,
    "balance": "$1,836.32",
    "picture": "http://placehold.it/32x32",
    "age": 28,
    "eyeColor": "green",
    "name": "Bradshaw Randall",
    "gender": "male",
    "company": "KENGEN",
    "email": "bradshawrandall@kengen.com",
    "phone": "+1 (955) 517-3942",
    "address": "485 Morgan Avenue, Brenton, Idaho, 4739",
    "about": "Labore voluptate cupidatat id ea Lorem dolore ipsum qui. Elit aute et dolore enim nulla eu nisi incididunt dolore officia tempor. Cillum veniam consequat cillum nisi in.\r\n",
    "registered": "2019-02-06T07:16:15 -03:00",
    "latitude": 75.626382,
    "longitude": -27.711717,
    "tags": [
      "labore",
      "consequat",
      "incididunt",
      "ex",
      "incididunt",
      "voluptate",
      "cupidatat"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Cooke Hancock"
      },
      {
        "id": 1,
        "name": "Suarez Hood"
      },
      {
        "id": 2,
        "name": "Bates Leblanc"
      }
    ],
    "greeting": "Hello, Bradshaw Randall! You have 7 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd70cc6cec2e8ce707",
    "index": 6,
    "guid": "25feec15-c3f9-4a79-950b-88e76a78b675",
    "isActive": false,
    "balance": "$3,214.59",
    "picture": "http://placehold.it/32x32",
    "age": 24,
    "eyeColor": "green",
    "name": "Darlene Glover",
    "gender": "female",
    "company": "KROG",
    "email": "darleneglover@krog.com",
    "phone": "+1 (959) 522-2797",
    "address": "631 Gardner Avenue, Crisman, Louisiana, 3576",
    "about": "Quis pariatur cillum cillum sint et consectetur occaecat velit laboris elit et mollit. Veniam ut velit id enim consequat consequat id officia aliquip anim consequat qui. Quis cillum in ipsum consectetur aliqua exercitation voluptate laborum in laborum eu minim consequat. Nisi occaecat enim ad aute sit incididunt do ullamco et nulla. Nulla officia in mollit duis consectetur culpa excepteur. Dolor ullamco est commodo magna irure occaecat eu excepteur exercitation dolore duis officia. Cillum aliquip id sunt sunt in labore anim mollit laboris est dolor exercitation consectetur.\r\n",
    "registered": "2018-07-03T03:10:32 -03:00",
    "latitude": -42.579361,
    "longitude": 178.507411,
    "tags": [
      "ea",
      "do",
      "incididunt",
      "magna",
      "est",
      "ex",
      "reprehenderit"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Rosalie Knight"
      },
      {
        "id": 1,
        "name": "Mccoy King"
      },
      {
        "id": 2,
        "name": "Darla Morin"
      }
    ],
    "greeting": "Hello, Darlene Glover! You have 3 unread messages.",
    "favoriteFruit": "apple"
  }
]