Delphi Json Okuma (üst ve alt kırılımlı)

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Delphi Json Okuma (üst ve alt kırılımlı)

Mesaj gönderen ender_arslanturk »

Selâmlar,

Kod: Tümünü seç

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, RzStatus, Vcl.ExtCtrls, RzPanel, 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.
Cevapla