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"
}
]