2012-06-14 171 views
0

我很難從這個存儲在php變量中的json中提取必要的數據。 尚未在這種數據結構方面的專家...json yql通過php檢索數據

想知道任何人都知道如何使其工作。

我需要通過結果循環,然後讀取每個接觸得到 1的值,其中類型=電子郵件 2.值 - >給定名稱其中type =名(每當元件存在)

的JSON解碼值如下面

$aNative = json_decode($retval); 

echo "lang: " . $aNative->query->lang . "<br>"; (works)  

(when go deeper, fail to retrieve any value...) 

echo "created: " . $aNative->results->contact[0]->created . "<br>"; 


foreach($aNative->$query->results as $contact) 
{ 
    echo $contact->id; 
    echo $contact->fields[0]->type; 

    if($contact->fields[0]->type=="email") 
    { 
     echo $contact->fields[0]->value; 
    } 

} 

完整JSON:

{ 
    "query":{ 
     "count":10, 
     "created":"2012-06-13T09:13:45Z", 
     "lang":"en-US", 
     "results":{ 

     "contact":[ 


      { 
       "created":"2006-10-29T04:32:07Z", 
       "updated":"2006-10-29T04:32:07Z", 
       "uri":"http://social.yahooapis.com/v1/user/BNQJOMYDQYLY2FZSMROV4QDA6MI/contact/14", 
       "isConnection":"false", 
       "id":"14", 
       "fields":{ 
        "created":"2006-10-29T04:32:07Z", 
        "updated":"2006-10-29T04:32:07Z", 
        "uri":"http://social.yahooapis.com/v1/user/BNQJOMYDQYLY2FZSMROV4QDA6MI/contact/14/email/11", 
        "id":"11", 
        "type":"email", 
        "value":"[email protected]", 
        "editedBy":"OWNER" 
       } 
      },    


      { 
       "created":"2006-10-29T04:32:07Z", 
       "updated":"2006-10-29T04:32:07Z", 
       "uri":"http://social.yahooapis.com/v1/user/MNQJOMYDQYLY2FZSMROV4QDA6MI/contact/12", 
       "isConnection":"false", 
       "id":"12", 
       "fields":[ 
        { 
        "created":"2006-10-29T04:32:07Z", 
        "updated":"2006-10-29T04:32:07Z", 
        "uri":"http://social.yahooapis.com/v1/user/MNQJOMYDQYLY2FZSMROV4QDA6MI/contact/12/email/6", 
        "id":"6", 
        "type":"email", 
        "value":"[email protected]", 
        "editedBy":"OWNER" 
        }, 
        { 
        "created":"2006-10-29T04:32:07Z", 
        "updated":"2006-10-29T04:32:07Z", 
        "uri":"http://social.yahooapis.com/v1/user/MNQJOMYDQYLY2FZSMROV4QDA6MI/contact/12/name/5", 
        "id":"5", 
        "type":"name", 
        "value":{ 
         "givenName":"'Jaq'", 
         "middleName":null, 
         "familyName":null, 
         "prefix":null, 
         "suffix":null, 
         "givenNameSound":null, 
         "familyNameSound":null 
        }, 
        "editedBy":"OWNER" 
        } 
       ] 
      } 



     ] 
     } 
    } 
} 

回答

0

你已經忘記了query。你要訪問的結果,例如以這樣的方式

$aNative->query->results->contact[0]->created 

,並查看整個你的代碼試圖訪問錯誤的性質很多次。例如在foreach中,您應該使用$aNative->query->results->contact而不是$aNative->results,因爲results它是一個對象而不是數組。

+0

我正面臨另一個挑戰,致命錯誤:不能使用stdClass類型的對象作爲數組在....相信由於第一次接觸沒有字段[0]和字段[1],任何想法得到周圍? –

+1

在第一個'contact''fields'是object,第二個和第三個是數組,所以在使用'fields'之前,先檢查它是數組還是對象。所以使用[is_object](http://php.net/manual/en/function.is-object.php),如果它是真的,使用' - >'否則你可以使用'foreach'或者通過索引。 –