Delphi Can

Orjinalini görmek için tıklayınız: Delphi Json Okuma (üst ve alt kırılımlı)
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Selâmlar, 

unit Unit1;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.StrUtils, System.JSON, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;

type
 TForm1 = class(TForm)
   Calistir: TButton;
   JsonSonucu: TMemo;
   procedure CalistirClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CalistirClick(Sender: TObject);
var
       I : Integer;
       JSonArabalar : TJsonArray;
       Araba, JsonFiyatlar : TJSonObject;
       ArabaFiyati : Double;
       ArabaMarkasi, ArabaModeli, ArabaYili, ArabaParaBirimi : String;

       Json:String;
begin
       Json:='';
       Json:=Json+'[';
        Json:=Json+'    {"Markalar":"Ferrari", "Modeller":"SF90 Stratade", "Yili":2020, "Fiyatlar":{"Fiyati":15000, "PS":"EUR"}},';
        Json:=Json+'    {"Markalar":"Ford", "Modeller":"viper", "Yili":2013, "Fiyatlar":{"Fiyati":24000, "PS":"EUR"}},';
        Json:=Json+'    {"Markalar":"Bmw", "Modeller":"Z4", "Yili":2008, "Fiyatlar":{"Fiyati":32000, "PS":"EUR"}},';
        Json:=Json+'    {"Markalar":"Mercedes", "Modeller":"SLK", "Yili":2001, "Fiyatlar":{"Fiyati":47000, "PS":"EUR"}},';
        Json:=Json+'    {"Markalar":"Visera", "Modeller":"2018", "Yili":2020, "Fiyatlar":{"Fiyati":61000, "PS":"TL"}},';
        Json:=Json+'    {"Markalar":"Sercedes", "Modeller":"MLK", "Yili":2005, "Fiyatlar":{"Fiyati":65000, "PS":"USD"}}';
        Json:=Json+']';

       JSonArabalar:=TJsonObject.ParseJsonValue(Json) as TJsonArray;

       If not Assigned(JSonArabalar) Then Exit;

       try
                 JsonSonucu.Clear;

                 For I:=0 to JSonArabalar.Count-1 Do
                 begin
                         try
                         {Object}Araba  :=  JSonArabalar.Get(I) as TJsonObject; //Object
                                         ArabaMarkasi :=  Araba.Get('Markalar').JsonValue.Value;
                                         ArabaModeli  :=  Araba.Get('Modeller').JsonValue.Value;
                                         ArabaYili    :=  Araba.Get('Yili').JsonValue.Value;

                                 {Object}JsonFiyatlar :=  Araba.Get('Fiyatlar').JsonValue as TJsonObject;
                                             ArabaFiyati     :=  (JsonFiyatlar.Get('Fiyati').JsonValue as TJsonNumber).AsDouble;
                                             ArabaParaBirimi :=   JsonFiyatlar.Get('PS').JsonValue.Value;

                                 JsonSonucu.Lines.Add('ArabaMarkasi : '+ArabaMarkasi);
                                 JsonSonucu.Lines.Add('ArabaModeli : '+ArabaModeli);
                                 JsonSonucu.Lines.Add('ArabaYili : '+ArabaYili);
                                 JsonSonucu.Lines.Add('ArabaFiyati : '+ArabaFiyati.ToString+' '+ArabaParaBirimi);
                                 JsonSonucu.Lines.Add('');
                                 JsonSonucu.Lines.Add('');
                         except
                                 On E:Exception Do
                                 JsonSonucu.Lines.Add('Hata : '+E.Message);
                         end;

                         Application.ProcessMessages;
                 end;
       finally
                 JSonArabalar.Free;
       end;
end;

end.

Acemiliğimden her ikisini bulamamıştım. Ya düz okuma vardı ya da hep alt alta okuma. Basit bir şeymiş. Başkaları uğraşmasın diye ekliyorum.

İyi günler.