努力从存储在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>";
未能获得所需的价值......
答案 0 :(得分:0)
这似乎是一个JSONP字符串,它不是'纯'的json。它是JSON,它被包装在一个回调函数中--JSONP用于解决AJAX跨域请求限制,而这个回调业务就是其中的一部分。
您必须剥离前导cbfun(
并尾随);
以获取真实的JSON数据,然后您可以将其传递到json_decode()。