JSON parselemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

JSON parselemek

Mesaj gönderen doktoraltun »

S.a Arkadaşlar ufacık bir sorunum var yardımcı olurmusunuz
Aşağıdaki kodun

Kod: Tümünü seç

{"status":"ok","id":"pSBYjYi1-Zo","title":"Leyla ile Mecnun En Guzel Sarkilari","thumbnail_url":"http:\/\/i.ytimg.com\/vi\/pSBYjYi1-Zo\/default.jpg","length":1140,"progress":0,"downloadUrl":"http:\/\/cb4db047.aclst.com\/dl.php\/pSBYjYi1-Zo\/Leyla%20ile%20Mecnun%20En%20Guzel%20Sarkilari.mp3?video_id=pSBYjYi1-Zo&t=cFNCWWpZaTEtWm8tODM5MzgyNTQ2LTEzNTUxNzMzMjgtNDU4MzYz&exp=13-12-2012&s=7df9aea9f80dfc385556bfa7e37d145e","ready":1,"artist":"Leyla ile Mecnun En Guzel Sarkilari","song":""}
Şurasını

Kod: Tümünü seç

http:\/\/cb4db047.aclst.com\/dl.php\/pSBYjYi1-Zo\/Leyla%20ile%20Mecnun%20En%20Guzel%20Sarkilari.mp3?video_id=pSBYjYi1-Zo&t=cFNCWWpZaTEtWm8tODM5MzgyNTQ2LTEzNTUxNzMzMjgtNDU4MzYz&exp=13-12-2012&s=7df9aea9f80dfc385556bfa7e37d145e
nasıl parse edebilirim teşekurler.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: JSON parselemek

Mesaj gönderen unicorn64 »

şöyle bişey buldum ama sanırım xe ile gelen bi özellik..

kabaca şöyle bişey de işe yarar gibi

Kod: Tümünü seç


function TForm1.Parse(s:string);
var
  p:integer;
begin
  p:=pos('"downloadUrl":',s);
  s:=copy(s,p+15,length(s)-(p+15));
  p:=pos('"',s);
  s:=copy(s,1,p-1);
  s:=StringReplace(s,'\/','/',[rfReplaceAll]);
  result:=s;
end;

bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Re: JSON parselemek

Mesaj gönderen mcihad »

http://www.progdigy.com/?page_id=6 adresinde JSON – SuperObject diye bir kütüphane var.
İncelemeni öneririm
Bize iyilik yaraşır.
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: JSON parselemek

Mesaj gönderen doktoraltun »

unicorn64 hocam vermiş oldugunuz kodu denemiştim daha önce ama arada bazı youtube videolarında nedense hep kod kayması yapıyor geçici bir çözüm olarak şunu denedim oldu

Kod: Tümünü seç

memo1.text:=idhttp1.get('http://www.**********.com/api/request.php?id='+ListBox2.Items[ListBox2.ItemIndex]+'&quality=128');
memo1.text:=copy(memo1.text,pos('"downloadUrl":"',memo1.text)+15);
memo1.text:=copy(memo1.text,1,pos('","',memo1.text)-1);
memo1.text:=tkd(memo1.text);
panel1.visible:=true;
mcihad hocam inan vermiş oldugnuz link ve onun butun benzerlerini inceledim ama bir türlü anlamadım
saygılar.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: JSON parselemek

Mesaj gönderen Lost Soul »

json için bu kütüphaneyi kullanıyorum. Oldukça işime yaradı. Superobject
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: JSON parselemek

Mesaj gönderen Battosai »

Delphi son sürümlerinde var mı bilmiyorum ama Lazarusta kurulumla birlikte gelen fpJson kütüphanesi var ben onu kullanıyorum... Delphi geliştiricileri JSON formatını dikkate almıyor oysaki JSON oldukça aktif kullanılan özellik web işlerinde çok kullanılan bir formattır.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: JSON parselemek

Mesaj gönderen thelvaci »

Delphi'nin son sürümlerinde JSon desteği var. DBXJSON.pas dosyasına bakabilirsiniz. Ancak, json parse işleminde superobject gibi kütüphaneler Delphi altındaki json parser'lardan daha hızlı çalışıyorlar.
erceskar
Üye
Mesajlar: 7
Kayıt: 02 Eki 2012 01:25

Re: JSON parselemek

Mesaj gönderen erceskar »

Arkadaşlar yeni konu açma linki görünmüyor bende o yüzden buradan sormak durumunda kaldım:
Şu şekilde 3 classım mevcut.
TSFis_S = class(TPersistent)
private
_SFis_MID : Integer;
public
property SFis_MID : Integer read _SFis_MID write _SFis_MID;
constructor Create;
end;

TSFis_D = class(TPersistent)
private
_SFis_MID : Integer;
_SFis_S : TObjectList<TSFis_S>;
public
property SFis_MID : Integer read _SFis_MID write _SFis_MID;
property SFis_S : TObjectList<TSFis_S> read _SFis_S write _SFis_S;
constructor Create;
end;

TSFis_M = class(TPersistent)
private
_SFis_MID : Integer;
_SFis_D : TObjectList<TSFis_D>;
public
property SFis_MID : Integer read _SFis_MID write _SFis_MID;
property SFis_D : TObjectList<TSFis_D> read _SFis_D write _SFis_D;
function ToJSON:TJSONObject;
constructor Create;
destructor Destroy;
end;

DBXJson 3. dereceye inince UnMarshal edemiyor. (Özel veri tipleri için Converter ve Reverterlar yazdım) Konuyu dağıtmamak için SuperObject ile bunu nasıl yapacağımı sormak istiyorum.

var
MainFis : TSFis_M;
SD : TSFis_D;
SS : TSFis_S;
begin
MainFis := TSFis_M.Create;
MainFis._SFis_MID := 1;
MainFis.SFis_D := TObjectList.Create;
MainFis.SFis_D.Add(TSFis_D.Create);
MainFis.SFis_D[0]._SFis_MID := 1;
MainFis.SFis_D[0].SFis_S := TObjectList.Create;
MainFis.SFis_D[0].SFis_S.Add(TSFis_S.Create);
MainFis.SFis_D[0].SFis_S[0]._SFis_MID := 1;
end;

Nesnemizi Master/Detail/SubDetail olarak doldurduk.
SuperOBject Kullanarak bunu nasıl Json a çevirebilirim, datasnap client a gönderdikten sonra nasıl tekrar TSFis_M ye çevirebilirim?
Kodu bu ekranda yazdım, synthax hatası olabilir, affola
Teşekkürler
Cevapla