Javascript Verilerini Parse Etme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    coder2
    coder2's avatar
    Kayıt Tarihi: 15/Mart/2007
    Erkek

    Ajax ile request atınca api üzerinden aşağıdaki gibi bir veri geliyor bizim sisteme.  

    Bu veri içinde dikkat ederseniz 7 tane value,value_raw verisi var. Bazı sayfalarda 3. ve 5. , bazı sayfalarda ise 4. ve 6. value_raw değerlerini kullanmam gerekiyor. Bu verileri alıp şu formata sokmam lazım:

    {
        {
            "datetime": "date Buraya",
            "3_value_raw": "3.value_raw_buraya",
            "5_value_raw": "5.value_raw_buraya"
        },
        {
            "datetime": "date Buraya",
            "3_value_raw": "3.value_raw_buraya",
            "5_value_raw": "5.value_raw_buraya"
        },
    }

     

     

    Gelen veri örneği:

     

    {
        "prtg-version": "120.110.22.3",
        "treesize": 11520,
        "histdata": [{
            "datetime": "6.6.2020 13:47:15 - 13:47:30",
            "datetime_raw": 43988.4496527778,
            "value": "6.371.541 KByte",
            "value_raw": 6524458086.6036,
            "value": "779.738 kbit/s",
            "value_raw": 97467255.5513,
            "value": "1.581.193 KByte",
            "value_raw": 1619141916.8621,
            "value": "193.504 kbit/s",
            "value_raw": 24187958.1246,
            "value": "4.790.348 KByte",
            "value_raw": 4905316169.7415,
            "value": "586.234 kbit/s",
            "value_raw": 73279297.4267,
            "value": "0 %",
            "value_raw": 0.0000,
            "coverage": "100 %",
            "coverage_raw": 10000
        }, {
            "datetime": "6.6.2020 13:47:30 - 13:47:45",
            "datetime_raw": 43988.4498263889,
            "value": "1.320.059 KByte",
            "value_raw": 1351740014.2524,
            "value": "720.928 kbit/s",
            "value_raw": 90116000.9502,
            "value": "359.314 KByte",
            "value_raw": 367937412.6521,
            "value": "196.233 kbit/s",
            "value_raw": 24529160.8435,
            "value": "960.745 KByte",
            "value_raw": 983802601.6003,
            "value": "524.695 kbit/s",
            "value_raw": 65586840.1067,
            "value": "0 %",
            "value_raw": 0.0000,
            "coverage": "100 %",
            "coverage_raw": 10000
        }]
    }

     

     

    JS konusunda bilgisi olan arkadaşlar yardımcı olabilirse sevinirim.

    coder2 tarafından 08/Haz/20 15:50 tarihinde düzenlenmiştir

    Önceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NoktaliVirgul
    NoktaliVirgul's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    var sonucArray=[];

    foreach ( line => gelenVeri["histdata"] ) {

    var tempArray=[];

    tempArray.push( "datetime" => line["datetime"] );

    tempArray.push( "3. raw" => line[3]  );

    tempArray.push( "5.raw" => line[5]  );

    sonucArray.push ( tempArray );

    }

     

    psudo oldu ama böyle birşey olması lazım. Javascriptte array'leri hiç sevmiyorum :(

    line[3]  ve line[5] in indexlerini hangisi lazımsa ona göre düzenlemek gerek

    NoktaliVirgul tarafından 08/Haz/20 15:56 tarihinde düzenlenmiştir

    If my calculations are correct, when this baby hits eighty-eight miles per hour... you"re gonna see some serious shit.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    coder2
    coder2's avatar
    Kayıt Tarihi: 15/Mart/2007
    Erkek

    Aşağıdaki gibi birşeyler yaptım, datetime verilerini alıyorum fakat index sırasını vererek elemanlara ulaşamadım. Sanırım key değerleri tekrar ettiği için hata oluşuyor veya sadece ilk key=>value leri alıyor.

     

    exampleData = {
        "prtg-version": "120.110.22.3",
        "treesize": 11520,
        "histdata": [{
            "datetime": "6.6.2020 13:47:15 - 13:47:30",
            "datetime_raw": 43988.4496527778,
            "value": "6.371.541 KByte",
            "value_raw": 6524458086.6036,
            "value": "779.738 kbit/s",
            "value_raw": 97467255.5513,
            "value": "1.581.193 KByte",
            "value_raw": 1619141916.8621,
            "value": "193.504 kbit/s",
            "value_raw": 24187958.1246,
            "value": "4.790.348 KByte",
            "value_raw": 4905316169.7415,
            "value": "586.234 kbit/s",
            "value_raw": 73279297.4267,
            "value": "0 %",
            "value_raw": 0.0000,
            "coverage": "100 %",
            "coverage_raw": 10000
        }, {
            "datetime": "6.6.2020 13:47:30 - 13:47:45",
            "datetime_raw": 43988.4498263889,
            "value": "1.320.059 KByte",
            "value_raw": 1351740014.2524,
            "value": "720.928 kbit/s",
            "value_raw": 90116000.9502,
            "value": "359.314 KByte",
            "value_raw": 367937412.6521,
            "value": "196.233 kbit/s",
            "value_raw": 24529160.8435,
            "value": "960.745 KByte",
            "value_raw": 983802601.6003,
            "value": "524.695 kbit/s",
            "value_raw": 65586840.1067,
            "value": "0 %",
            "value_raw": 0.0000,
            "coverage": "100 %",
            "coverage_raw": 10000
        }]
    };
    
    var result = [];
    
    exampleData["histdata"].forEach(function(item){
        var tempArray=[];
    
        tempArray["datetime"] = item["datetime"];
        tempArray["3_value"] = item[7];
        tempArray["5_value"] = item[9];
    
        result.push(tempArray);
    
    });
    
    console.log(result);

     

     

    coder2 tarafından 08/Haz/20 16:33 tarihinde düzenlenmiştir

    Önceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    Problem gelen JSON değerinde

    http://json.parser.online.fr/

    Buraya gelen çıktıyı yapıştırabilirsin. JS eval tahmin edeceğin gibi gelen değerin direk JSON object olarak okunmuş hali.

    Her key value'su benzersiz olmak zorundadır. Javascript betik dili JSON da bunun bir çeşit objecti olduğu için hata vermiyor fakat en son değer okunur. Bu gelen veriyi kim veriyorsa onda problem var.

    İlla bir şeyler bulmak istiyorsan elbette bir şeyler yazılabilir fakat JSON kullanmış olmazsın

    Çözüm önerisi için üşendim açıkcası ama yol göstermek açısında JSON olarak değil plain text olarak okuyup regex ile okuman bir çare olabilir. Yine de dediğim gibi çok saçma

    Yine de boş geçmiş olmayım diye çözüm açısından "json multiple same keys" google aramasından güzel 3 link koydum (ilk 3 link ama olsun belki sen de yazmaya üşenmişsindir diye)

    https://github.com/nlohmann/json/issues/612

    https://dzone.com/articles/duplicate-keys-in-json-objects

    https://stackoverflow.com/questions/5306741/do-json-keys-need-to-be-unique

     

     


    iyibu! yeniden..
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    coder2
    coder2's avatar
    Kayıt Tarihi: 15/Mart/2007
    Erkek

    Teşekkürler arkadaşlar, sonuç olarak sorunu şimdilik çözemedim :) 

    Regex veya server tarafında php ile birşeyler yaparak parse etme yoluna gideceğim.


    Önceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ndmylmz
    ndmylmz's avatar
    Kayıt Tarihi: 01/Ocak/2010
    Erkek

    Javascript icindeki objede birden fazla ayni key kullanilmis,direk native fonksiyonlar bunu parse etmez hocam. Regex isini gorur muhtemelen. Eger halledemezsen ozelden ulas bana.


    Sistemi de kapattım ama PHP konusunda hala yardımcı olurum // Boş gezenin boş kalfası - Öğrenci - YTÜ
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yunusemre
    yunusemre's avatar
    Kayıt Tarihi: 22/Ağustos/2016
    Erkek

    Eğer histdata içerisi sabit geliyorsa;

     

    var historyData = Object.values(OBJEADI.histdata);

    historyData[2]; //ilk value
    historyData[3]; //ilk value_raw

     

    sonrakileri almak için [] içindeki index değerini kullanırsın.

     

    yunusemre tarafından 08/Haz/20 23:17 tarihinde düzenlenmiştir

    "Programcılar saatler boyunca çalışmak zorunda kalmalarına engel olacak sistemler tasarlamaya saatler boyunca uğraşırlar." David Allen
Toplam Hit: 426 Toplam Mesaj: 7
javascript json parse