![]() |
| 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. |
JsonArray kullanımı |
Yanıt Yaz
|
| Yazar | |
M-Guney
Kıdemli Üye
Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 112 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Konu: JsonArray kullanımıGönderim Zamanı: 13 Kasım 2025 Saat 17:44 |
|
Burada bulunan jsondaki itemname i almak istiyorum ve jsonarraya json ile atama yapmak istiyorum.
Örnek olarak çalıştıramadığım kod var Arr : TCLJSONArray; { Arr = TCLJSONArray.Create; Arr = TCLJSONArray.CreateFromJSON('{"order_id": 30,"table_name": "K12","order_time": "17:57 13.11.2025","status": "Pending","note": "Please make one of the kebabs extra spicy.","grand_total": 398,"items": [{"item_id": 2,"item_name": "kebap","amount": 2,"unit_price": 123,"total_price": 246},{"item_id": 4,"item_name": "Izgara piliç","amount": 1,"unit_price": 76,"total_price": 76},{"item_id": 7,"item_name": "Izgara kanat","amount": 1,"unit_price": 76,"total_price": 76}]}'); ShowMessage(Arr.ToJSONString); } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Asıl yapmak istediğim ise Burada invalid type cast hatasını gidermek istiyorum. void GetOrderDetailsCompletedV(Sender) var Arr : TCLJSONArray; restObj: TCLRest; responseLength: Integer; FQry: TCLJSONQuery; { Try restObj = TCLRest(Sender); if (restObj == nil) { ShowMessage(' HATA: Sender nil! Response alınamadı!'); Exit; } JsonResponse = restObj.Response; responseLength = Length(JsonResponse); if (responseLength == 0) { ShowMessage('️ UYARI: Response boş! (0 karakter)'); ShowMessage('query is Served (boş response)'); Exit; }/* If (responseLength > 50){ jsonOutput = Copy(JsonResponse, 1, 50) + '...' + JsonResponse; } ShowMessage(' restObj Response: ' + jsonOutput);*/ FQry = TCLJSONQuery.Create(nil); FQry = Clomosy.ClDataSetFromJSON(JsonResponse); Arr = TCLJSONArray.Create; Try Arr = TCLJSONArray.CreateFromJSON(JsonResponse); ShowMessage(JsonResponse); ShowMessage(Arr.ToJSONString); if ((Arr == nil) || (Arr.Count == 0)) { ShowMessage('JSON Array boş!'); ShowMessage('query is Served (boş array)'); Exit; } noteMemo.Text = Clomosy.CLParseJSON(JsonResponse, '0.note'); AmountValueLbl.Text = Clomosy.CLParseJSON(JsonResponse, '0.grand_total') + 'TL'; DisplayArrivalTime.Text = Clomosy.CLParseJSON(JsonResponse, '0.order_time'); DetailsPnlV(FQry); finally if (Arr <> nil) { Arr.Free; Arr = nil; } //ShowMessage(' query is Served (başarılı)'); } except ShowMessage(' Hata: ' + LastExceptionMessage); } } |
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 419 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 13 Kasım 2025 Saat 17:52 |
|
void GetItemsFromJSON var jsonString: String; itemsJson: String; i: Integer; itemName: String; { Try jsonString = '{"order_id": 30,"table_name": "K12","order_time": "17:57 13.11.2025","status": "Pending","note": "Please make one of the kebabs extra spicy.","grand_total": 398,"items": [{"item_id": 2,"item_name": "kebap","amount": 2,"unit_price": 123,"total_price": 246},{"item_id": 4,"item_name": "Izgara piliç","amount": 1,"unit_price": 76,"total_price": 76},{"item_id": 7,"item_name": "Izgara kanat","amount": 1,"unit_price": 76,"total_price": 76}]}'; // yöntem: CLParseJSON ile items array'ini al itemsJson = Clomosy.CLParseJSON(jsonString, 'items'); if (itemsJson <> '') { ItemsArr = TCLJSONArray.Create; ItemsArr = TCLJSONArray.CreateFromJSON(itemsJson); ShowMessage('Items Array Count: ' + IntToStr(ItemsArr.Count)); for (i = 0 to ItemsArr.Count - 1) { itemName = Clomosy.CLParseJSON(itemsJson, IntToStr(i) + '.item_name'); ShowMessage('Item ' + IntToStr(i) + ': ' + itemName); } ItemsArr.Free; ItemsArr = nil; } except ShowMessage('GetItemsFromJSON hatası: ' + LastExceptionMessage); } } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Değil Puanlar: 419 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 13 Kasım 2025 Saat 17:55 |
|
void GetOrderDetailsCompletedV(Sender) var restObj: TCLRest; responseLength: Integer; itemsJson: String; i: Integer; itemName: String; { Try restObj = TCLRest(Sender); if (restObj == nil) { ShowMessage('Sender nil Response alınamadı'); Exit; } JsonResponse = restObj.Response; responseLength = Length(JsonResponse); if (responseLength == 0) { ShowMessage('UYARI: Response boş '); Exit; } FQry = Clomosy.ClDataSetFromJSON(JsonResponse); itemsJson = Clomosy.CLParseJSON(JsonResponse, 'items'); if (itemsJson == '') { ShowMessage('UYARI: Items array bulunamadı'); Exit; } Arr = TCLJSONArray.Create; Arr = TCLJSONArray.CreateFromJSON(itemsJson); if ((Arr == nil) || (Arr.Count == 0)) { ShowMessage('UYARI: Items array boş'); if (Arr <> nil) { Arr.Free; Arr = nil; } Exit; } for (i = 0 to Arr.Count - 1) { itemName = Clomosy.CLParseJSON(itemsJson, IntToStr(i) + '.item_name'); ShowMessage('Item ' + IntToStr(i) + ': ' + itemName); } noteMemo.Text = Clomosy.CLParseJSON(JsonResponse, 'note'); AmountValueLbl.Text = Clomosy.CLParseJSON(JsonResponse, 'grand_total') + 'TL'; DisplayArrivalTime.Text = Clomosy.CLParseJSON(JsonResponse, 'order_time'); DetailsPnlV(FQry); if (Arr <> nil) { Arr.Free; Arr = nil; } if (FQry <> nil) { FQry.Free; FQry = nil; } except ShowMessage('GetOrderDetailsCompletedV hatası: ' + LastExceptionMessage); if (Arr <> nil) { Arr.Free; Arr = nil; } if (FQry <> nil) { FQry.Free; FQry = nil; } } } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
M-Guney
Kıdemli Üye
Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 112 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 3 Saat 37 Dakika Önce Saat 11:59 |
|
{"note":"no potato","status":"Served","items":{"item_id":"2","amount":"29"}}
Body yi bu şekilde yolluyorum fakat aslında {"note":"no potato","status":"Served", "items": [ { "item_id": "2", "amount": "2" }, { "item_id": "7", "amount": "1" } ] } bu şekilde yollamam gerekiyor nasıl yapabilirim. function SetUpdateBodyV: String var Order, Items: TCLJSONObject; LPieceStr, LItemID : String; ChangeBtn : TClProButton; TempItemJson : String; FArr : TCLJSONArray; I : Integer; TempPieceLbl : TclProLabel; { Try Order = TCLJSONObject.Create; Order.AddPair('note', TCLJSONValue.Str(noteMemo.Text)); ChangeBtn = TClProButton(MainForm.Clsender); if (ChangeBtn <> nil) { Order.AddPair('status', TCLJSONValue.Str(ChangeBtn.ClTagStr)); } Items = TCLJSONObject.Create; // items{ item_id amount} TempItemJson = Clomosy.CLParseJSON(JsonResponse, 'items'); // for taking item_id FArr = TCLJSONArray.CreateFromJSON(TempItemJson); for (I=0 to FArr.Count -1){ LItemID = Clomosy.CLParseJSON(TempItemJson, IntToStr(I) + '.item_id') // item_id is ready TempPieceLbl = MainForm.clFindComponent('PieceLbl' + IntToStr(I)); // for taking amount if (TempPieceLbl <> nil) { LPieceStr = TempPieceLbl.Text; Delete(LPieceStr, 1, 1); } // amount is ready if((StrToInt(LPieceStr) <>nil)&&(StrToInt(LItemID) <>nil)){ Items.AddPair('item_id', TCLJSONValue.Str(LItemID)); Items.AddPair('amount', TCLJSONValue.Str(LPieceStr)); } } Order.AddArray('items', Items); Clomosy.SetClipboard(Order.ToJSONString); ShowMessage('SetUpdateBodyV OUTPUT: '+Order.ToJSONString); Result = Order.ToJSONString; except ShowMessage('CalculateTotalPrice hatası: ' + LastExceptionMessage); } } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
M-Guney
Kıdemli Üye
Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 112 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 2 Saat 17 Dakika Önce Saat 13:19 |
|
function SetUpdateBodyV: String var Order, Items: TCLJSONObject; LPieceStr, LItemID : String; ChangeBtn : TClProButton; TempItemJson : String; FArr : TCLJSONArray; Item : TClProObject; I : Integer; TempPieceLbl : TclProLabel; { Try Order = TCLJSONObject.Create; Order.AddPair('note', TCLJSONValue.Str(noteMemo.Text)); ChangeBtn = TClProButton(MainForm.Clsender); if (ChangeBtn <> nil) { Order.AddPair('status', TCLJSONValue.Str(ChangeBtn.ClTagStr)); } Items = TCLJSONArray.Create; // items{ item_id amount} Item = TCLJSONObject.Create; TempItemJson = Clomosy.CLParseJSON(JsonResponse, 'items'); // for taking item_id FArr = TCLJSONArray.CreateFromJSON(TempItemJson); for (I=0 to FArr.Count -1){ LItemID = Clomosy.CLParseJSON(TempItemJson, IntToStr(I) + '.item_id') // item_id is ready TempPieceLbl = MainForm.clFindComponent('PieceLbl' + IntToStr(I)); // for taking amount if (TempPieceLbl <> nil) { LPieceStr = TempPieceLbl.Text; Delete(LPieceStr, 1, 1); } // amount is ready if((StrToInt(LPieceStr) <>nil)&&(StrToInt(LItemID) <>nil)){ Item.AddPair('item_id', TCLJSONValue.Str(LItemID)); Item.AddPair('amount', TCLJSONValue.Str(LPieceStr)); Items.AddObject('items',Item); ShowMessage(Item.ToJSONString+'added') } } Order.AddArray('items', Items); Clomosy.SetClipboard(Order.ToJSONString); ShowMessage('SetUpdateBodyV OUTPUT: '+Order.ToJSONString); Result = Order.ToJSONString; except ShowMessage('CalculateTotalPrice hatası: ' + LastExceptionMessage); } } https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Bu şekilde bir yol izledim yapmak için obje, array, obje şeklinde iç içe bir yapı kurguladım fakat arraya eklemek istediğim objeti eklemiyor. |
|
![]() |
|
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 |