Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir. |
Json parçalama işlemleri |
Yanıt Yaz |
Yazar | |
Osman
Yeni Üye Kayıt Tarihi: 22 Temmuz 2024 Durum: Aktif Değil Puanlar: 29 |
Mesaj Seçenekleri
Teşekkürler(0)
Gönderim Zamanı: 22 Temmuz 2024 Saat 15:46 |
ShowMessage(FieldByName('name').AsString); Dökümantasyonda bu şekilde bir örnek var fakat daha derine girmek istersen json da nasıl ayıklama yapabiliriz Örnek {"result"["madde"{"anlam":"hello"}]} buradakli anlama nasıl ulaşıalabilir |
|
Developer
Forum Yöneticisi Kayıt Tarihi: 14 Haziran 2023 Durum: Aktif Değil Puanlar: 354 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Developer
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Merhaba Osman,
Aşağıdaki kodları inceler misin ? var MyForm:TCLForm; panel1,panel2,panel3:TclProPanel; captionLbl,EUROCaptionLabel:TClProLabel; clEdit:TCLProEdit; ClCombo:TCLComboBox; qryJSONStr:String; qry:TCLJSONQuery; //
*****************************JSONParse fonksiyonu**************************** void JSONParse(JSONString: String); var Key, Value, jsonValue: String; i: Integer; InKey, InValue, InString:
Boolean; { InKey = False; InValue = False; InString = False; Key = ''; Value = ''; jsonValue = ''; i = 1; while (i <= Length(JSONString)) { case JSONString of { '{', '}', ' ': { // Bu karakterleri
görmezden gel } ':': if (not InString) { InKey = False; InValue = True; } ',': if (not InString) { // Bir anahtar-değer
çifti tamamlandı if ((Key <> '')
&& (Value <> '')) { // JSON yapısındaki
verileri ComboBox'a ata ClCombo.AddItem(Key,Value); //jsonValue = 'Key: ' +
Key + ' Value: ' + Value;
//ShowMessage(jsonValue); Key = ''; Value = ''; InValue = False; } } else if(InValue) Value = Value +
JSONString; '"': { InString = not InString; if (InString) { if ((not InKey)
&& (not InValue)) { InKey = True; Key = ''; } else if (InValue) Value = ''; } else { if (InKey) InKey = False; else if (InValue) InValue = False; } } else if (InString) { if (InKey) Key = Key +
JSONString else if (InValue) Value = Value +
JSONString; } else { if (InValue) Value = Value +
JSONString; } } Inc(i); } } //
*****************************JSONParse fonksiyonu**************************** void ComboSelected; var strValue:String; { // ComboBox'da seçilen anahtarın
value değerini al
strValue=ClCombo.GetValueIndex(ClCombo.ItemIndex); //ShowMessage(strValue); clEdit.Text=strValue; } // Main { MyForm=TCLForm.Create(self); // Buradaki JSON verisi
exchangeratesapi sitesinden API aracılığı ile alınmış örnek bir JSON verisidir // 1 Euro'nun kur bilgilerini
içermektedir qry = TCLJSONQuery.Create(nil); qry =
Clomosy.ClDataSetFromJSON('[{"success":true,"timestamp":1720586356,"base":"EUR","date":"2024-07-10",
"rates":{"AED":3.973991,"AFN":77.033984,"ALL":100.39128,"AMD":420.094393,"ANG":1.951768,
"AOA":942.547486,"ARS":992.430824,"AUD":1.604089,"AWG":1.947525,"AZN":1.838688,"BAM":1.957162,
"BBD":2.186733,"BDT":127.248585,"BGN":1.956162,"BHD":0.407805,"BIF":3117.184457,"BMD":1.081958,
"BND":1.462025,"BOB":7.483209,"BRL":5.86237,"BSD":1.083069,"BTC":1.8277493e-5,"BTN":90.409557, "BWP":14.654405,"BYN":3.544248,"BYR":21206.380982,"BZD":2.183031,"CAD":1.474871,"CDF":3099.810551,
"CHF":0.970734,"CLF":0.036682,"CLP":1012.16126,"CNY":7.871892,"CNH":7.888127,"COP":4340.816352,
"CRC":579.005755,"CUC":1.081958,"CUP":28.671893,"CVE":110.342326,"CZK":25.279415,"DJF":192.834045,
"DKK":7.459665,"DOP":64.024867,"DZD":145.299452,"EGP":52.007129,"ERN":16.229373,"ETB":62.146051,
"EUR":1,"FJD":2.41731,"FKP":0.848907,"GBP":0.845712,"GEL":2.964594,"GGP":0.848907,"GHS":16.677687, "GIP":0.848907,"GMD":73.30244,"GNF":9325.535137,"GTQ":8.410894,"GYD":226.577734,"HKD":8.451733,
"HNL":26.822797,"HRK":7.593657,"HTG":143.170331,"HUF":393.887359,"IDR":17588.312717,"ILS":3.979989,
"IMP":0.848907,"INR":90.325388,"IQD":1418.68763,"IRR":45536.918776,"ISK":149.095306,"JEP":0.848907,
"JMD":169.758963,"JOD":0.766894,"JPY":174.650154,"KES":138.079754,"KGS":92.661392,"KHR":4457.123458,
"KMF":491.752529,"KPW":973.762534,"KRW":1497.711427,"KWD":0.331144,"KYD":0.902541,"KZT":520.199353, "LAK":23945.88737,"LBP":96984.546613,"LKR":329.245944,"LRD":210.52948,"LSL":19.635868,"LTL":3.194742,
"LVL":0.654466,"LYD":5.255732,"MAD":10.667927,"MDL":19.2774,"MGA":4869.457418,"MKD":61.535752,
"MMK":3514.158072,"MNT":3732.755942,"MOP":8.714867,"MRU":42.886054,"MUR":50.646688,"MVR":16.72704,
"MWK":1877.916004,"MXN":19.35297,"MYR":5.090634,"MZN":68.915371,"NAD":19.635141,"NGN":1677.814689,
"NIO":39.867939,"NOK":11.474508,"NPR":144.655371,"NZD":1.776308,"OMR":0.416506,"PAB":1.082954, "PEN":4.105258,"PGK":4.233967,"PHP":63.105212,"PKR":301.502073,"PLN":4.255797,"PYG":8166.100006,
"QAR":3.948867,"RON":4.972568,"RSD":117.046379,"RUB":94.668681,"RWF":1416.892929,"SAR":4.057973,
"SBD":9.127184,"SCR":14.954411,"SDG":650.257133,"SEK":11.415568,"SGD":1.460476,"SHP":1.367,
"SLE":24.719827,"SLL":22688.12483,"SOS":614.552242,"SRD":32.642961,"STD":22394.350552,
"SVC":9.475728,"SYP":2718.452931,"SZL":19.628937,"THB":39.350276,"TJS":11.533629,"TMT":3.786854,
"TND":3.379969,"TOP":2.548338,"TRY":35.612666,"TTD":7.333207,"TWD":35.265356,"TZS":2875.31465,
"UAH":44.158045,"UGX":4012.793537,"USD":1.081958,"UYU":43.290337,"UZS":13665.51335,
"VEF":3919450.468026,"VES":39.447913,"VND":27508.787575,"VUV":128.452216,"WST":3.030148,
"XAF":656.417003,"XAG":0.035144,"XAU":0.000457,"XCD":2.924046,"XDR":0.822584,"XOF":656.423074,
"XPF":119.331742,"YER":270.895298,"ZAR":19.638499,"ZMK":9738.922608,"ZMW":26.778003,"ZWL":348.390103}}]'); try //ShowMessage(qry.getJSONString); with qry do { if (Found) { First; while (not EOF) { //Burada iç içe olan JSON
yapısındaki ihtiyacımız olan 'rates' isimli anahtarın değerini alıyourz
qryJSONStr=FieldByName('rates').AsString; //ShowMessage(qryJSONStr); Next; } } } except ShowMessage('Exception Class:
'+LastExceptionClassName+' Exception Message: '+LastExceptionMessage); } //*************************************panel1**************************************
panel1=MyForm.AddNewProPanel(MyForm, 'panel1');
clComponent.SetupComponent(panel1,'{
"Align":"center", "Height":150, "Width":300, "MarginBottom":100, "Borderwidth":2,
"Bordercolor":"#276286", "RoundHeight":10, "RoundWidth":10 }');
//*************************************panel2***************************************
panel2=MyForm.AddNewProPanel(panel1,'panel2'); clComponent.SetupComponent(panel2,'{
"Align":"Top", "Height":50, "MarginTop":6, "Width":290 }');
captionLbl=MyForm.AddNewProLabel(panel2, 'captionLbl', 'EURO KUR
BİLGİSİ');
clComponent.SetupComponent(captionLbl,'{ "TextColor":"#276286",
"Textbold":"yes" }');
//**************************************panel3*************************************
panel3=MyForm.AddNewProPanel(panel1,'panel3');
clComponent.SetupComponent(panel3,'{
"Align":"Top", "Height":50, "MarginTop":6, "Width":290,
"BackgroundColor":"#276286" }');
clEdit=MyForm.AddNewProEdit(panel3, 'clEdit', '3.973991');
clComponent.SetupComponent(clEdit,'{
"Align":"center", "Borderwidth":2,
"Bordercolor":"#276286", "MarginRight":60, "Height":30, "RoundHeight":5, "RoundWidth":5 }'); clEdit.ReadOnly = True;
ClCombo=MyForm.AddNewComboBox(panel3, 'clCombo'); clCombo.Height=26; clCombo.Align=alCenter; clCombo.Width=70; clCombo.Margins.Left=140; JSONParse(qryJSONStr);
MyForm.AddNewEvent(clCombo,tbeOnChange,'ComboSelected');
EUROCaptionLabel=MyForm.AddNewProLabel(panel3, 'EUROCaptionLabel', '1
EURO');
clComponent.SetupComponent(EUROCaptionLabel,'{
"Align":"center", "MarginRight":150,
"TextColor":"#FFFFFF",
"Textbold":"yes" }'); MyForm.Run; } |
|
Osman
Yeni Üye Kayıt Tarihi: 22 Temmuz 2024 Durum: Aktif Değil Puanlar: 29 |
Mesaj Seçenekleri
Teşekkürler(0)
|
kodu inceledim fakat direkt kendi çalışmasında sıkıntı var gibi görünüyor panellerde sorun yok her şey normal gözüküyor fakat comboboxın içine herhangi bir veri eklenmiyor tahminimce JsonParse tam çalışmıyor
//jsonValue = 'Key: ' + Key + ' Value: ' + Value; //ShowMessage(jsonValue); bu kısımdaki yorum satırlarını kaldırdığımda ise herhangi bir showmessage çıkmıyor |
|
Developer
Forum Yöneticisi Kayıt Tarihi: 14 Haziran 2023 Durum: Aktif Değil Puanlar: 354 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Developer
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Merhaba Osman,
Kod herhangi bir sorun gözükmüyor. Beraber bakalım. Bir de aşağıdaki kodunu inceler misin? var MyForm:TclForm; JSONData,clEditStr: String; i, nameStart, nameEnd, nameCount: Integer; currentName, inputName: string; isInsideQuotes, isNameMatched: Boolean; clMemo:TCLMemo; clEdt:TclProEdit; clBtn:TClProButton; clLbl:TClProLabel; void countName; { JSONData = '[{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, ' + '{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, ' + '{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}]'; //name='Ahmet'; clEditStr=clEdt.Text; // JSON verisini işle nameCount = 0; i = 1; isInsideQuotes = False; currentName = ''; while (i <= Length(JSONData)) { if (JSONData == '"') { isInsideQuotes = not isInsideQuotes; if (isInsideQuotes) nameStart = i + 1 else { nameEnd = i - 1; currentName = ''; // İsim değerini çıkar while (nameStart <= nameEnd) { currentName = currentName + JSONData[nameStart]; Inc(nameStart); } // İsim eşleşmesi kontrolü isNameMatched = True; if (Length(currentName) == Length(clEditStr)) { for (nameStart = 1 to Length(currentName)) { if (currentName[nameStart] <> clEditStr[nameStart]) { isNameMatched = False; Break; } } } else isNameMatched = False; // Eşleşme varsa sayacı artır if (isNameMatched) Inc(nameCount); } } Inc(i); } if(nameCount==0) ShowMessage('Girdiğiniz isim yoktur'); else { // Sonucu ekrana yazdır ShowMessage('Girdiğiniz isimden '+ IntToStr(nameCount)+ ' tane var.'); } } // ************************** Main ********************************** { MyForm=TclForm.Create(Self); // Örnek JSON verisi JSONData = '[{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, ' + '{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, ' + '{"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, ' + '{"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, ' + '{"isim": "Ali"}, {"isim": "Zeynep"}, {"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, ' + '{"isim": "Ahmet"}, {"isim": "Ahmet"}, {"isim": "Mehmet"}, {"isim": "Ayşe"}, {"isim": "Ali"}, {"isim": "Zeynep"}, ' + '{"isim": "Ali"}, {"isim": "Elif"}, {"isim": "Emre"}, {"isim": "Ali"}, {"isim": "Ahmet"}, {"isim": "Ahmet"}]'; clMemo=MyForm.AddNewMemo(MyForm,'clMemo', ''); clMemo.Align=alCenter; clMemo.Height=400; clMemo.Width=350; clMemo.Margins.Bottom=200; clMemo.ReadOnly= True; clMemo.TextSettings.WordWrap = True; clMemo.Text=JSONData; clLbl=MyForm.AddNewProLabel(MyForm, 'clLbl', 'Hangi isimden kaç tane olduğunu bulmak istediğiniz ismi giriniz:'); clComponent.SetupComponent(clLbl,'{"Align":"Center", "Width":500, "Height":50, "MarginTop":280, "TextSize":16 }'); clEdt=MyForm.AddNewProEdit(MyForm, 'clEdt', 'isim giriniz'); clComponent.SetupComponent(clEdt,'{"Align":"Center", "BorderColor":"#652020", "RoundHeight":10, "RoundWidth":10, "BorderWidth":2, "Width":150, "MarginTop":350 }'); clBtn=MyForm.AddNewProButton(MyForm, 'clBtn', 'İsim sayısını bul'); clComponent.SetupComponent(clBtn,'{"clBtn":"Center", "BorderColor":"#652020", "RoundHeight":10, "RoundWidth":10, "BorderWidth":2, "Width":150, "MarginTop":450 }'); MyForm.AddNewEvent(clBtn,tbeOnClick,'countName'); //countName; MyForm.Run; } |
|
Yanıt Yaz | |
Tweet |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |