Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
json parse
#11
Merhaba,
Delphi XE5 ile birlikte gelen REST.Json kütüphanesi içerisinde tanımlı JsonToObject metodları ile düzenli JSON verilerini doğrudan sınıf yapısına dönüştürebilirsiniz.
JsonToObject  metodu ile vermiş olduğunuz JSON verisindeki birkaç alanı, sınıf yapısına dönüştüren arayüzü paylaşıyorum.
Benzer şekilde diğer alanları bu arayüze ekleyerek, mantığını kavramış olursunuz.

Önemli Not: JSON verisi içerisindeki değer içeren alan adları ile getter/setter adları aynı olmalıdır.
Örneğin, JSON verisindeki KUTU_ADETI alanındaki değeri, sınıfa ait property'e  aktarabilmek için aşağıdaki gibi bir isimlendirme yapmalısınız. Aksi durumda JsonToObject metodu ilgili alanın değerini nereye aktaracağını bilemez.

  private
   FKutu_Adeti : String;
 public
   property KutuAdedi: String read FKutu_Adeti;
 end;

Dikkat ettiyseniz; KUTU_ADETI alanı, FKutu_Adeti olarak tanımlanmıştır.

Not: JSON verisindeki ILAC_BILGISI alanı kayıt dizisi olduğu için Array tipinde tanımlanmalıdır. (Aşağıda örneği mevcut)

Kullanacağınız sınıflar için Unit yapısı:
unit uRecete;

interface

uses Generics.Collections, Rest.Json;

type
 TIlacAd = class
 private
   FValue: String;
 public
   property Value: String read FValue;
 end;

 TIlacBilgisi = class
 private
   FIlac_Adi: TIlacAd;
 public
   property IlacAd: TIlacAd read FIlac_Adi;
   constructor Create;
   destructor Destroy; override;
 end;

 THekimKimlikNumarasi = class
 private
   FValue: String;
 public
   property Value: String read FValue;
 end;

 TReceteTarihi = class
 private
   FValue: String;
 public
   property Value: String read FValue;
 end;

 TReceteBilgisi = class
 private
   FHekim_Kimlik_Numarasi: THekimKimlikNumarasi;
   FIlac_Bilgisi: TArray<TIlacBilgisi>;
   FRecete_Tarihi: TReceteTarihi;
 public
   property HekimKimlikNumarasi: THekimKimlikNumarasi
     read FHekim_Kimlik_Numarasi;
   property IlacBilgisi: TArray<TIlacBilgisi> read FIlac_Bilgisi;
   property ReceteTarihi: TReceteTarihi read FRecete_Tarihi;
   constructor Create;
   destructor Destroy; override;
 end;

 TSonuc = class
 private
   FRecete_Bilgisi: TReceteBilgisi;
 public
   property ReceteBilgisi: TReceteBilgisi read FRecete_Bilgisi;
   constructor Create;
   destructor Destroy; override;
 end;

 TRecete = class
 private
   FDurum: SmallInt;
   FSonuc: TSonuc;
 public
   property Durum: SmallInt read FDurum;
   property Sonuc: TSonuc read FSonuc;
   constructor Create;
   destructor Destroy; override;
   class function JsonToRecete(strJsonRecete: string): TRecete;
 end;

implementation

{ TIlacBilgisi Sınıfı }

constructor TIlacBilgisi.Create;
begin
 inherited;
 FIlac_Adi := TIlacAd.Create();
end;

destructor TIlacBilgisi.Destroy;
begin
 FIlac_Adi.free;
 inherited;
end;

{ TReceteBilgisi Sınıfı }

constructor TReceteBilgisi.Create;
begin
 inherited;
 FRecete_Tarihi := TReceteTarihi.Create();
 FHekim_Kimlik_Numarasi := THekimKimlikNumarasi.Create();
end;

destructor TReceteBilgisi.Destroy;
var
 IlacBilgisi: TIlacBilgisi;
begin

 for IlacBilgisi in FIlac_Bilgisi do
   IlacBilgisi.free;

 FRecete_Tarihi.free;
 FHekim_Kimlik_Numarasi.free;
 inherited;
end;

{ TSonuc Sınıfı }

constructor TSonuc.Create;
begin
 inherited;
 FRecete_Bilgisi := TReceteBilgisi.Create();
end;

destructor TSonuc.Destroy;
begin
 FRecete_Bilgisi.free;
 inherited;
end;

{ TTRecete Sınıfı }

constructor TRecete.Create;
begin
 inherited;
 FSonuc := TSonuc.Create();
end;

destructor TRecete.Destroy;
begin
 FSonuc.free;
 inherited;
end;

class function TRecete.JsonToRecete(strJsonRecete: string): TRecete;
begin
 result := TJson.JsonToObject<TRecete>(strJsonRecete)
end;

end.

Kullanımı aşağıdaki gibidir.
var
 Recete: TRecete;
begin
 Recete := TRecete.Create;
 try
   Recete := Recete.JsonToRecete(Memo2.Text);
   Memo1.Clear;
   Memo1.Lines.Add('Durum: ' + Recete.Durum.ToString);
   Memo1.Lines.Add('Reçete Tarihi: ' +Recete.Sonuc.ReceteBilgisi.ReceteTarihi.value);
   Memo1.Lines.Add('Hekim Kimlik Numarası: ' + Recete.Sonuc.ReceteBilgisi.HekimKimlikNumarasi.value);
   Memo1.Lines.Add('İlaç Adı: ' + Recete.Sonuc.ReceteBilgisi.IlacBilgisi[0].IlacAd.value);
 finally
   FreeAndNil(Recete);
 end;
end;

Örnek Uygulama:

json2.jpg
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#12
(12-10-2018, Saat: 09:23)PİRSUS23 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.ustadlar tavsiyeleriniz için teşekkür ederim. ben başka yerlerden yardım almaya çalışayım. yine de zaman ayırdığınız için teşekkürler.

Böyle ukela bir cevap üzerine hala yardım için çaba gösteren @Fesih ARSLAN beyi tebrik ederim.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#13
(13-10-2018, Saat: 16:50)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(12-10-2018, Saat: 09:23)PİRSUS23 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.ustadlar tavsiyeleriniz için teşekkür ederim. ben başka yerlerden yardım almaya çalışayım. yine de zaman ayırdığınız için teşekkürler.

Böyle ukela bir cevap üzerine hala yardım için çaba gösteren @Fesih ARSLAN  beyi tebrik ederim.

Dikkatinizden kaçmayan bu ince nüans için teşekkür ederim @yhackup bey.
Karşılığıyla cevap vermeyi de biliyoruz, fakat burda bulunma amacımız kişilerle mücadele değil, teknolojik cehalet ile mücadeledir.
Kendisi ve ben bir gün yok olup gideceğiz, bu bilgi ise gelecek nesildeki DelphiCan'lara kalıcaktır.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#14
(13-10-2018, Saat: 16:50)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(12-10-2018, Saat: 09:23)PİRSUS23 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.ustadlar tavsiyeleriniz için teşekkür ederim. ben başka yerlerden yardım almaya çalışayım. yine de zaman ayırdığınız için teşekkürler.

Böyle ukela bir cevap üzerine hala yardım için çaba gösteren @Fesih ARSLAN  beyi tebrik ederim.

Abi biz bilgi saklıyoruz öyle deme Smile
Yazılım Topluluğumuz -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Kişisel Tanıtım Sitem -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
19 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Thumbs Up Json Parse AV Hatası yhackup 0 116 02-09-2019, Saat: 13:27
Son Yorum: yhackup
  XML Json dosyaları ile Çalışma masteryoda 9 1.892 02-08-2019, Saat: 11:20
Son Yorum: TheEAK
  Json Parse Etme faktoral 3 277 01-08-2019, Saat: 08:50
Son Yorum: SimaWB
  Json Free Etmek yhackup 4 558 31-07-2019, Saat: 11:17
Son Yorum: Halil Han Badem
  REST.Json, TJSon.JsonToObject sorunsalı Gürcan 14 1.156 27-05-2019, Saat: 11:33
Son Yorum: SimaWB



Konuyu Okuyanlar: 1 Ziyaretçi