У меня есть проблема с доступом к определенному свойству (hlink) в коде JSON. Это связано с тем, что структура вывода JSON не всегда одинакова, и в результате я получаю следующую ошибку: «Нельзя использовать объект типа stdClass as array in ...». Может ли кто-нибудь помочь мне решить эту проблему?анализировать данные JSON с различными структурами
JSON выход 1 (Array)
Array (
[0] => stdClass Object (
[hlink] => http://www.rock-zottegem.be/
[main] => true
[mediatype] => webresource)
[1] => stdClass Object (
[copyright] => Rock Zottegem
[creationdate] => 20/03/2013 14:35:57
[filename] => b014933c-fdfd-4d93-939b-ac7adf3a20a3.jpg
[filetype] => jpeg
[hlink] => http://media.uitdatabank.be/20130320/b014933c-fdfd-4d93-939b-ac7adf3a20a3.jpg
)
выход JSON 2
stdClass Object (
[copyright] => Beschrijving niet beschikbaar
[creationdate] => 24/04/2013 19:22:47
[filename] => Cinematek_F14281_1.jpg
[filetype] => jpeg
[hlink] => http://media.uitdatabank.be/20130424/Cinematek_F14281_1.jpg
[main] => true
[mediatype] => photo
)
И это мой код:
try {
if (!empty($img[1]->hlink)){
echo "<img src=" . $img[1]->hlink . "?maxheight=300></img>";
}
}
catch (Exception $e){
$e->getMessage();
}
В принципе, вы должны получить разобранный JSON и изучить его, чтобы увидеть, что у вас есть. (Это помогло бы, если бы мы поняли, на каком языке вы используете. Я угадываю JavaScript, но я не уверен.) –
Довольно часто встречаются случаи, когда другой конец отправляет один «объект», если есть только один, но массив объектов, если их несколько. Один трюк, который я использовал в этом случае, - это проверить первый символ нераспакованного источника JSON и, если он '{', slap '[]' вокруг строки, превратить его в одноэлементный массив. Тогда анализируемый JSON можно рассматривать одинаково, независимо. –
Вы не используете str = JSON.stringify (obj) и JSON.parse (str)? Какой метасимвол выше? Это не JSON. Почему бы вам не представить минимальный пример JSON для начала? – stackunderflow