Json parçalama işlemleri
Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=710
Tarih: 09 Ocak 2025 Saat 12:57 Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com
Konu: Json parçalama işlemleri
Mesajı Yazan: Osman
Konu: Json parçalama işlemleri
Mesaj Tarihi: 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
|
Cevaplar:
Mesajı Yazan: Developer
Mesaj Tarihi: 22 Temmuz 2024 Saat 16:14
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;
}
|
Mesajı Yazan: Osman
Mesaj Tarihi: 22 Temmuz 2024 Saat 17:11
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
|
Mesajı Yazan: Developer
Mesaj Tarihi: 23 Temmuz 2024 Saat 11:49
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; }
|
|