Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - Json parçalama işlemleri
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

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 Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
Osman Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 22 Temmuz 2024
Durum: Aktif Değil
Puanlar: 29
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Osman Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Json parçalama işlemleri
    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
Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 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;

  }

 


Yukarı Dön
Osman Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 22 Temmuz 2024
Durum: Aktif Değil
Puanlar: 29
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Osman Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 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

Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 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;
  }

Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,070 Saniyede Yüklendi.