Sayfayı Yazdır | Pencereyi Kapat

Jsondan rastgele veri çekme

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=1204
Tarih: 29 Kasım 2025 Saat 17:17
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Jsondan rastgele veri çekme
Mesajı Yazan: kaanl0
Konu: Jsondan rastgele veri çekme
Mesaj Tarihi: 06 Ekim 2025 Saat 16:45
var
mainform : tclform;


void jsonV
var
words, word:String;

i: Integer;

 {
  words=clomosy.getunittext('categorywords');
  word= Clomosy.CLParseJSON(words, 'categories.'+IntToStr(i)+'.pairs.0.0');
  ShowMessage(word);
}



{
  mainform = TclForm.Create(Self);
  mainform.run;
  jsonV;
  
}  
------------------------------------------------------
 Clomosynin textindeki Json yapısından veri çekiyorum ama bunu rastgele yapmam gerek bunu nasıl yapabilirim 

-----------Kullandığım JSON------------


{
  "categories": [
    {
      "id": 1,
      "name": "Futbolcular",
      "pairs": [
        ["Cristiano Ronaldo", "Lionel Messi"],
        ["Frank Lampard", "Steven Gerrard"],
        ["Wayne Rooney", "Robin van Persie"],
        ["Sergio Ramos", "Gerard Piqué"],
        ["Mesut Özil", "İlkay Gündoğan"],
        ["Arda Turan", "Emre Belözoğlu"],
        ["Roberto Carlos", "Marcelo"],
        ["Erling Haaland", "Kylian Mbappé"],
        ["Luka Modrić", "Toni Kroos"],
        ["Arjen Robben", "Franck Ribéry"],
        ["Mohamed Salah", "Sadio Mané"],
        ["Neymar", "Antoine Griezmann"],
        ["Kevin De Bruyne", "Bernardo Silva"],
        ["Jude Bellingham", "Pedri"],
        ["Phil Foden", "Jamal Musiala"],
        ["Vinícius Júnior", "Rodrygo"],
        ["Bukayo Saka", "Gabriel Martinelli"],
        ["Lautaro Martínez", "Julián Álvarez"],
        ["Declan Rice", "Enzo Fernández"],
        ["Achraf Hakimi", "João Cancelo"],
        ["Virgil van Dijk", "Kalidou Koulibaly"],
        ["Harry Kane", "Robert Lewandowski"],
        ["Karim Benzema", "Gonzalo Higuaín"],
        ["Paulo Dybala", "Lautaro Martínez"],
        ["Frenkie de Jong", "Gavi"],
        ["Raphinha", "Ousmane Dembélé"],
        ["Romelu Lukaku", "Álvaro Morata"],
        ["Ángel Di María", "James Rodríguez"],
        ["Eden Hazard", "Marco Reus"],
        ["Zlatan Ibrahimović", "Olivier Giroud"],
        ["Fernando Torres", "David Villa"],
        ["Didier Drogba", "Samuel Eto’o"],
        ["Andrea Pirlo", "Xavi Hernández"],
        ["Andrés Iniesta", "Cesc Fàbregas"],
        ["Thiago Silva", "Marquinhos"],
        ["Gianluigi Buffon", "Iker Casillas"],
        ["Petr Čech", "Edwin van der Sar"],
        ["John Terry", "Rio Ferdinand"],
        ["Paolo Maldini", "Alessandro Nesta"],
        ["Cafu", "Dani Alves"],
        ["Claudio Marchisio", "Daniele De Rossi"],
        ["Sergio Busquets", "Casemiro"],
        ["N’Golo Kanté", "Jorginho"],
        ["Thomas Müller", "Mario Götze"],
        ["Mesut Özil", "David Silva"],
        ["Xabi Alonso", "Michael Carrick"],
        ["Clarence Seedorf", "Edgar Davids"],
        ["Ronaldinho", "Kaká"],
        ["Ronaldo Nazário", "Rivaldo"],
        ["Pelé", "Diego Maradona"]
      ]
    }
  ]
}

  




Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Ekim 2025 Saat 09:07
Merhaba Kaan, 
SON veri yapısından rastgele veri çekmek istiyorsan, öncelikle kaç adet pair olduğunu öğrenmeli, sonra bu sayıya göre random fonksiyonunu kullanarak rastgele bir indeks üretmelisin.
var
  myform: TclForm;
  words, firstPlayer, secondPlayer: String;
  pairCount, randomIndex: Integer;

void jsonV
{
  words = Clomosy.getunittext('categorywords');
  
  pairCount = Clomosy.CLParseJSON(words, 'categories.0.pairs.length');
  randomIndex = Random(pairCount); // Örneğin 0–49 arası

  firstPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.0');
  secondPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.1');

  ShowMessage('Çift: ' + firstPlayer + ' & ' + secondPlayer);
}

{
  myform = TclForm.Create(Self);
  jsonV;
  myform.Run;
}



Mesajı Yazan: kaanl0
Mesaj Tarihi: 07 Ekim 2025 Saat 09:38
Hocam Length komutu hep 0 döndürüyor bu yüzden hep aynı isimler çıkıyor


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Ekim 2025 Saat 10:05
Toplam pair sayısını bildiğimiz için 
var
  mainform: TclForm;
  words, firstPlayer, secondPlayer: String;
  randomIndex: Integer;

void jsonV {
  {
    words = Clomosy.getunittext('categorywords');
    
    // Toplam pair sayısı 50 
    randomIndex = Random(50);
    
    // Rastgele çifti al
    firstPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.0');
    secondPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.1');
    
    ShowMessage('Rastgele Çift: ' + firstPlayer + ' & ' + secondPlayer);
  }
}

{
  mainform = TclForm.Create(Self);
  jsonV;
  mainform.Run;


kullanmayı dener misin? 

ya da döngü yardımıyla pair sayısını bulalım;
var
  mainform: TclForm;
  words, firstPlayer, secondPlayer: String;
  pairCount, randomIndex, i: Integer;
  found: Boolean;

void jsonV {
  {
    words = Clomosy.getunittext('categorywords');
    
    // Pair sayısı için döngü 
    pairCount = 0;
    found = True;
    
    while (found) {
      firstPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(pairCount) + '.0');
      if (firstPlayer <> '') {
        pairCount = pairCount + 1;
      } else {
        found = False;
      }
    }
    
    // Rastgele indeks 
    randomIndex = Random(pairCount);
    
    // Rastgele çifti al
    firstPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.0');
    secondPlayer = Clomosy.CLParseJSON(words, 'categories.0.pairs.' + IntToStr(randomIndex) + '.1');
    
    ShowMessage('Rastgele Çift: ' + firstPlayer + ' & ' + secondPlayer);
  }
}

{
  mainform = TclForm.Create(Self);
  jsonV;
  mainform.Run;
}


Mesajı Yazan: kaanl0
Mesaj Tarihi: 07 Ekim 2025 Saat 10:32
teşekkürler hocam



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net