2016-11-23 3 views
0

У меня есть JSON массив как этотPHP получить имя объекта JSON

{ 
    "STATUS": "SUCCESS", 
    "MESSAGE": "", 
    "DATA": { 
    "list": [ 
     { 
     "val0": { 
      "hidden": "0", 
      "rate": "10" 
     } 
     }, 
     { 
     "val1": { 
      "hidden": "0", 
      "rate": "20" 
     } 
     } 
    ], 
    "status": "Provisioned" 
    } 
} 

Я хочу, чтобы получить имя объекта DATA>list>. Я пробовал с get_class($list[0]), но выход stdClass. Выход должен быть val0. Как я могу попробовать. Пожалуйста, помогите

+0

декодировать JSON и цикл массив –

+0

'«На самом деле я хочу StdClass name.'»Пожалуйста, укажите конечную цель и удалить из вопроса, что вы не«на самом деле»хочу. – 1252748

ответ

2

Использования json_decode, list также является массив, Therefor первого ключа (0) представляет val0, и если вы хотите, чтобы получить внутреннее содержание val0, то вам снова придется кольцуют.

$data = '{ 
    "STATUS": "SUCCESS", 
    "MESSAGE": "", 
    "DATA": { 
    "list": [ 
     { 
     "val0": { 
      "hidden": "0", 
      "rate": "10" 
     } 
     }, 
     { 
     "val1": { 
      "hidden": "0", 
      "rate": "20" 
     } 
     } 
    ], 
    "cpe_status": "Provisioned" 
    } 
}'; 

$data = json_decode($data, true); 

foreach($data['DATA']['list'][0] as $key=>$value){ 
    echo $key; // return val0 
    echo "<br/>"; 
    // to get val0 inner content 
    foreach($value as $item=>$list){ 
     echo $item." - ".$list; // return val0 inner data 
     echo "<br/>"; 
    } 
} 

// alternative way for loop val0 inner content 
foreach($data['DATA']['list'][0]['val0'] as $key=>$value){ 
    echo $key." - ".$value; // return val0 inner data 
    echo "<br/>"; 
} 
2

Будет надеяться, что самообъясняющий Отрывок ниже может предложить вам совет о том, как идти о делать это самостоятельно. И, кстати, вы можете Quick-Test it Here.

<?php 

     $strJson  = '{ 
             "STATUS"  : "SUCCESS", 
             "MESSAGE"  : "", 
             "DATA"  : { 
               "list" : [ 
                { 
                 "val0" : { 
                  "hidden" : "0", 
                  "rate" : "10" 
                 } 
                }, 
                { 
                 "val1" : { 
                  "hidden" : "0", 
                  "rate" : "20" 
                 } 
               } 
               ], 
              "cpe_status" : "Provisioned" 
             } 
          }'; 

     $objJson  = json_decode($strJson); 
     $data   = $objJson->DATA; 
     $lists   = $data->list; 
     $list0   = $lists[0]; 
     $list1   = $lists[1]; 

     var_dump($lists); 

var_dump($lists) выше урожайности ::

 array (size=2) 
      0 => 
      object(stdClass)[47] 
       public 'val0' => 
       object(stdClass)[46] 
        public 'hidden' => string '0' (length=1) 
        public 'rate' => string '10' (length=2) 
      1 => 
      object(stdClass)[49] 
       public 'val1' => 
       object(stdClass)[48] 
        public 'hidden' => string '0' (length=1) 
        public 'rate' => string '20' (length=2) 

Теперь вы можете просто получить все данные, которые вы хотите из списка, используя простой цикл вроде так :

<?php 

     foreach($lists as $objList){ 
      if(is_object($objList)){ 
       foreach($objList as $key=>$data){ 
        // NOW, YOU CAN DO SOMETHING WITH THE DATA... 
        // LIKE GET THE `hidden` OR `rate` PROPERTIES/ATTRIBUTES 
        $hidden  = $data->hidden; 
        $rate  = $data->rate; 
        // var_dump($hidden); 
        // var_dump($rate); 
        // var_dump($key); 
        var_dump($data); 
       } 
      } 
     } 
1

попробовать

$data = '{ 
        "STATUS": "SUCCESS", 
        "MESSAGE": "", 
        "DATA": { 
        "list": [ 
         { 
         "val0": { 
          "hidden": "0", 
          "rate": "10" 
         } 
         }, 
         { 
         "val1": { 
          "hidden": "0", 
          "rate": "20" 
         } 
         } 
        ], 
        "status": "Provisioned" 
        } 
       }'; 
     $data = json_decode($data); 

     $ss = $data->DATA->list; 
     echo $ss[0]->val0->rate; 
Смежные вопросы