Я пытаюсь декодировать строку JSON в массив, но я получаю следующую ошибку.
Неустранимая ошибка: нельзя использовать объект типа stdClass как массив в C: \ wamp \ www \ temp \ asklaila.php в строке 6
Вот код:
<?php $json_string = 'http://www.domain.com/jsondata.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata); print_r($obj['Result']); ?>
В соответствии с документацией вам нужно указать, хотите ли вы ассоциативный массив вместо объекта из json_decode
, это будет код:
json_decode($jsondata, true);
попробуй это
$json_string = 'http://www.domain.com/jsondata.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata,true); echo "<pre>"; print_r($obj);
Это поздний вклад, но существует допустимый случай для литья json_decode
с (array)
.
Рассмотрим следующее:
$jsondata = ''; $arr = json_decode($jsondata, true); foreach ($arr as $k=>$v){ echo $v; // etc. }
Если $jsondata
когда-либо возвращается как пустая строка (как это часто бывает у меня), json_decode
вернет NULL
, что приведет к ошибке. Предупреждение: неверный аргумент, предоставленный foreach () в строке 3 . Вы можете добавить строку if / then code или trernary operator, но IMO чище просто изменить строку 2 на …
$arr = (array) json_decode($jsondata,true);
… если вы не json_decode
используете json_decode
миллионы больших массивов, и в этом случае, как указывает @ TCB13, производительность может быть отрицательно выполнена.
На всякий случай, если вы работаете на php менее 5.2, вы можете использовать этот ресурс.
http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/
Это также изменит его на массив:
<?php print_r((array) json_decode($object)); ?>
json_decode
поддерживает второй аргумент, когда он устанавливает значение TRUE
он возвращает Array
а stdClass Object
. Проверьте страницу руководства json_decode
чтобы просмотреть все поддерживаемые аргументы и их данные.
Например, попробуйте следующее:
$json_string = 'http://www.example.com/jsondata.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata, TRUE); // Set second argument as TRUE print_r($obj['Result']); // Now this will works!
Попробуйте это
<?php $json_string = 'http://www.domain.com/jsondata.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata, true); echo "<pre>"; print_r($obj['Result']); ?>
в PHP json_decode конвертировать json-данные в связанный с PHP массив
Для Ex: $php-array= json_decode($json-data, true); print_r($php-array);
$php-array= json_decode($json-data, true); print_r($php-array);
Попробуйте вот так:
$json_string = 'https://example.com/jsondata.json'; $jsondata = file_get_contents($json_string); $obj = json_decode($jsondata); print_r($obj->Result); foreach($obj->Result as $value){ echo $value->id; //change accordingly }