PHP JSON çıktı ayıklama yardım.. - R10.net
  • 14-10-2020, 21:11:57
    #1
    herkese iyi forumlar arkadaşlar,
    trendyol api sistemini kullanarak kategori özellikleri çekmekteyim ancak foreach olarak özellik ve özellik içinde değerleri temiz olarak bir türlü çıktı alamadım,
    temiz bir çıktı alıp veri tabanına kayıt yapıcam, almak istediğim şu şekilde
    önce attribute içinde id ve name alıp hemen altınada attributeValues içindeki id ve name'leri eklemek

    aşağıya çıktıyı koyuyorum şimdiden yardımcı olan arkadaşlara teşekkürlerimi iletiyorum..

    stdClass Object
    (
        [categoryId] => 2752
        [attribute] => stdClass Object
            (
                [id] => 14
                [name] => Materyal
            )
    
    
        [required] =>
        [allowCustom] =>
        [varianter] =>
        [slicer] =>
        [attributeValues] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 9330
                        [name] => Poliüretan
                    )
    
    
                [1] => stdClass Object
                    (
                        [id] => 710
                        [name] => Keten
                    )
    
    
                [2] => stdClass Object
                    (
                        [id] => 681
                        [name] => Pamuklu
                    )
    
    
                [3] => stdClass Object
                    (
                        [id] => 99
                        [name] => Polyester
                    )
    
    
                [4] => stdClass Object
                    (
                        [id] => 660
                        [name] => Tencel
                    )
    
    
            )
    
    
    )
    stdClass Object
    (
        [categoryId] => 2752
        [attribute] => stdClass Object
            (
                [id] => 179
                [name] => Kalıp
            )
    
    
        [required] =>
        [allowCustom] =>
        [varianter] =>
        [slicer] =>
        [attributeValues] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 2005
                        [name] => Regular
                    )
    
    
                [1] => stdClass Object
                    (
                        [id] => 2004
                        [name] => Oversize
                    )
    
    
                [2] => stdClass Object
                    (
                        [id] => 2001
                        [name] => Bol
                    )
    
    
                [3] => stdClass Object
                    (
                        [id] => 2860
                        [name] => Büyük Beden
                    )
    
    
                [4] => stdClass Object
                    (
                        [id] => 2028
                        [name] => Slim Fit
                    )
    
    
            )
    
    
    )
    stdClass Object
    (
        [categoryId] => 2752
        [attribute] => stdClass Object
            (
                [id] => 33
                [name] => Desen
            )
    
    
        [required] => 
        [allowCustom] => 
        [varianter] => 
        [slicer] => 
        [attributeValues] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 315
                        [name] => Baskılı
                    )
    
    
                [1] => stdClass Object
                    (
                        [id] => 998
                        [name] => Çiçekli
                    )
    
    
                [2] => stdClass Object
                    (
                        [id] => 314
                        [name] => Düz Renk
                    )
    
    
                [3] => stdClass Object
                    (
                        [id] => 997
                        [name] => Yazılı
                    )
    
    
                [4] => stdClass Object
                    (
                        [id] => 999
                        [name] => Çizgili
                    )
    
    
                [5] => stdClass Object
                    (
                        [id] => 1000
                        [name] => Ekose / Kareli
                    )
    
    
            )
    
    
    )
    brszn
  • 14-10-2020, 21:16:33
    #3
    mertkilic0111 adlı üyeden alıntı
    Bence json u array e çevirirsen daha kolay işlem yapabilirsin
    hocam derdim değer içinde değeri temiz çıktı alamamak.
    brszn
  • 14-10-2020, 21:19:38
    #4
    Merhabalar,

    Tekli veri çekimi için;
    $out = array();
    
    $out['id'] = $data[0]->attribute->id;
    $out['name'] = $data[0]->attribute->name;
    $out['val_id'] = $data[0]->attributeValues[0]->id;
    $out['val_name'] = $data[0]->attributeValues[0]->name;
    
    print_r(json_encode($out));
    Çoklu veri çekimi için ise;
    $out = array();
    for($i = 0; $i < count($data); $i++)
    {
    if($data[$i]->attributeValues)
    {
    for($x = 0; $x < count($data[$i]->attributeValues); $x++)
    {
    $out['val_id'][$i][$x] = $data[$i]->attributeValues[$x]->id;
    $out['val_name'][$i][$x] = $data[$i]->attributeValues[$x]->name;
    }
    }
    }
    
    print_r(json_encode($out));
    şeklinde kullanabilirsiniz.
    Tüm HTML, CSS, jQuery, PHP ve NodeJS işleriniz yapılır sıfırdan özel script yazılır script düzenlemesi yapılır
  • 14-10-2020, 21:24:34
    #5
    nacrept adlı üyeden alıntı
    Merhabalar,

    Tekli veri çekimi için;
    $out = array();
    
    $out['id'] = $data[0]->attribute->id;
    $out['name'] = $data[0]->attribute->name;
    $out['val_id'] = $data[0]->attributeValues[0]->id;
    $out['val_name'] = $data[0]->attributeValues[0]->name;
    
    print_r(json_encode($out));
    Çoklu veri çekimi için ise;
    $out = array();
    for($i = 0; $i < count($data); $i++)
    {
    if($data[$i]->attributeValues)
    {
    for($x = 0; $x < count($data[$i]->attributeValues); $x++)
    {
    $out['val_id'][$i][$x] = $data[$i]->attributeValues[$x]->id;
    $out['val_name'][$i][$x] = $data[$i]->attributeValues[$x]->name;
    }
    }
    }
    
    print_r(json_encode($out));
    şeklinde kullanabilirsiniz.
    bi sonuç alamadım hocam boş veri geldi,
    yukarda vermiş olduğum çıktı kullanmış olduğum kütüphanenin çıktısıdır aşağıya kodumu ekliyorum..
    $ozellik = $trendyol->category->getCategoryAttributes(2752);
    print_r($ozellik);
    brszn
  • 14-10-2020, 21:41:09
    #6
    Almak istediğiniz temiz çıktı şeklini belirtirseniz kodu yazabilirim. Nasıl bir şemada istiyorsunuz çıktıyı.
    ===> iamsubscribed.com - ÜCRETSİZ INSTAGRAM ARAÇLARI <===
  • 14-10-2020, 21:49:14
    #7
    MuhammetDemirel adlı üyeden alıntı
    Almak istediğiniz temiz çıktı şeklini belirtirseniz kodu yazabilirim. Nasıl bir şemada istiyorsunuz çıktıyı.
    böyle bir çıktı almak hocam amacım.

    [id] => 179
    [name] => Kalıp
    
       [id] => 2005
       [name] => Regular
       [id] => 2004
       [name] => Oversize
    
    [id] => 33
    [name] => Desen
    
       [id] => 315
       [name] => Baskılı
       [id] => 998
       [name] => Çiçekli
    brszn
  • 14-10-2020, 22:02:55
    #8
    ByMezarkabul adlı üyeden alıntı
    böyle bir çıktı almak hocam amacım.

    [id] => 179
    [name] => Kalıp
    
       [id] => 2005
       [name] => Regular
       [id] => 2004
       [name] => Oversize
    
    [id] => 33
    [name] => Desen
    
       [id] => 315
       [name] => Baskılı
       [id] => 998
       [name] => Çiçekli
    Alt kategorileri tab ile boşluklandırdığınız için values içinde aldım. Bir dener misiniz istediğiniz gibi mi?

    $data = [];
    
    foreach(json_decode($ozellik, true) as $feature){
    $attribute = $feature['attribute'];
    $attribute['values'] = [];
    
    foreach($feature['attributeValues'] as $values){
    array_push($attribute['values'], $values);
    }
    
    array_push($data, $attribute);
    }
    
    print_r($data);
    ===> iamsubscribed.com - ÜCRETSİZ INSTAGRAM ARAÇLARI <===
  • 14-10-2020, 22:09:21
    #9
    MuhammetDemirel adlı üyeden alıntı
    Alt kategorileri tab ile boşluklandırdığınız için values içinde aldım. Bir dener misiniz istediğiniz gibi mi?

    $data = [];
    
    foreach(json_decode($ozellik, true) as $feature){
    $attribute = $feature['attribute'];
    $attribute['values'] = [];
    
    foreach($feature['attributeValues'] as $values){
    array_push($attribute['values'], $values);
    }
    
    array_push($data, $attribute);
    }
    
    print_r($data);
    hocam çıktı json'mu değil bilemedim ama bu hatayı verrdi
    [B]Warning[/B]: json_decode() expects parameter 1 to be string, object given in
    bu esnada biraz araştırırken stackoverflow'da aşağıdaki kod ile istediğim sonucu alabildim arkadaşlar yardımcı olan herkese teşekkür ediyorum..
    @mertkilic0111; @nacrept; @MuhammetDemirel;

    foreach($ozellik->categoryAttributes as $mydata){
        echo $mydata->attribute->id."\n";
        echo $mydata->attribute->name."\n\n";
    
        foreach($mydata->attributeValues as $values){
            echo $values->id."\n";
            echo $values->name."\n";
        }
        echo "\n\n";
    }
    brszn