php从yql中检索json值

时间:2012-06-14 03:03:21

标签: json oauth yql

努力从存储在php变量中的这个复杂json中提取必要的数据。

通过php脚本,我调用了yql。 返回数据并分配给$ retarr;

然后再向下,$ retarr [2]存储如下的完整值:

$debugarrays= print_r($retarr[2], true);
echo "<pre>";
echo $debugarrays;
echo "</pre>";


cbfunc({
   "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/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":"jaq@lifemastr.com",
                     "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"
                  }
               ]
            } 


         ]
      }
   }
});


$sJson= $retarr[2];
$aNative   = json_decode($sJson);
print_r($aNative);


echo $retarr[2]->fields[0]->id."<br>";
echo $retarr[2]->fields[0]->type."<br>";
echo $retarr[2]->fields[0]->value."<br>";

未能获得所需的价值......

1 个答案:

答案 0 :(得分:0)

这似乎是一个JSONP字符串,它不是'纯'的json。它是JSON,它被包装在一个回调函数中--JSONP用于解决AJAX跨域请求限制,而这个回调业务就是其中的一部分。

您必须剥离前导cbfun(并尾随);以获取真实的JSON数据,然后您可以将其传递到json_decode()。