Я пытаюсь извлечь необходимые данные из этого json, хранящегося внутри переменной php. Еще не эксперт в этой структуре данных еще ...json yql data retrieval через php
Удовлетворение каждого из нас знает, как заставить его работать.
мне нужно цикл по результатам, а затем прочитать каждый контакт, чтобы получить 1. Значение где тип = электронный 2. значение-> GivenName где тип = имя (всякий раз, когда элемент существует)
декодируется значение 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"
}
]
}
]
}
}
}
Я столкнулся с другим вызовом, Неустранимая ошибка: нельзя использовать объект типа stdClass в качестве массива .... Верю, что из-за первого контакта не имеют полей [0] и полей [1], любая идея получить вокруг? –
В первом 'contact'' fields' - это объект, во втором и третьем - массив, поэтому перед использованием поля 'fields' проверяется массив или объект. Поэтому используйте [is_object] (http://php.net/manual/en/function.is-object.php), и если это правда, используйте '->' иначе вы можете использовать 'foreach' или идти по индексам. –