Я пытаюсь декодировать строку 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']);
?>
$ob->Result
вместо этого.Ответы:
Согласно документации , вам нужно указать, если вы хотите ассоциативный массив вместо объекта
json_decode
, это будет код:источник
попробуй это
источник
Это поздний вклад, но есть веские основания для кастинга
json_decode
с(array)
.Учтите следующее:
Если
$jsondata
когда-либо будет возвращено как пустая строка (как в моем опыте это часто бывает),json_decode
вернетсяNULL
, что приведет к ошибке. Предупреждение: неверный аргумент передан для foreach () в строке 3 . Вы можете добавить строку кода if / then или троичного оператора, но IMO чище просто изменить строку 2 на ...... если вы не используете
json_decode
миллионы больших массивов одновременно, в этом случае, как указывает @ TCB13, производительность может ухудшиться.источник
Если вы работаете с PHP менее 5.2, вы можете использовать этот ресурс.
http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/
http://mike.teczno.com/JSON/JSON.phps
источник
Согласно PHP Documentation
json_decode
функция имеет параметр с именем assoc, который преобразует возвращаемые объекты в ассоциативные массивы.Поскольку параметр assoc
FALSE
по умолчанию установлен, вам необходимо установить это значениеTRUE
для получения массива.Изучите приведенный ниже код для примера использования:
какие выводы:
источник
Это также изменит его в массив:
источник
json_decode($object, true);
true
json_decode
+ приведение на 45% быстрее, чем запуск обоих вариантовjson_decode
. С другой стороны, оба настолько быстры, что если вам не нужны буквально тысячи декодировок, разница незначительна.json_decode
Поддержка второго аргумента, когда он установлен наTRUE
него будет возвращатьArray
вместоstdClass Object
. Проверьте Руководство пользователя страницуjson_decode
функции , чтобы увидеть все поддерживаемые аргументы и его деталь.Например попробуйте это:
источник
Таким образом, если вам нужен массив, вы можете передать второй аргумент как 'true' в
json_decode
функции.источник
Я надеюсь, что это поможет вам
Используйте функцию декодирования Json
Цикл по массиву JSON в PHP
Результат : Компьютерные системы (сети)
источник
в PHP json_decode конвертирует данные json в связанный с PHP массив.
Например:
$php-array= json_decode($json-data, true); print_r($php-array);
источник
Пожалуйста, попробуйте это
источник
Попробуйте вот так:
источник