Json_decode для массива

Я пытаюсь декодировать строку JSON в массив, но я получаю следующую ошибку.

Неустранимая ошибка: нельзя использовать объект типа stdClass как массив в C:\wamp\www\temp\asklaila.php on line 6

Вот код:

<?php
$json_string = 'http://www.domain.com/jsondata.json';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>

Ответ 1

По документации, вам нужно указать, хотите ли вы ассоциативный массив вместо объекта из json_decode, это будет код:

json_decode($jsondata, true);

Ответ 2

попробуй это

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);

Ответ 3

Это поздний вклад, но существует допустимый случай для литья 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 миллионы больших массивов одновременно, и в этом случае, как указывает @TCB13, производительность может быть отрицательно выполнена.

Ответ 5

Это также изменит его на массив:

<?php
    print_r((array) json_decode($object));
?>

Ответ 6

json_decode поддерживать второй аргумент, когда он установлен в TRUE, он вернет Array вместо stdClass Object. Проверьте Manual страницу 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!

Ответ 7

Согласно документации PHP, функция json_decode имеет параметр с именем assoc, который преобразует возвращаемые объекты в ассоциативные массивы.

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

Поскольку параметр assoc по умолчанию равен FALSE, для получения массива необходимо установить значение TRUE.

Изучите приведенный ниже код для примера использования:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

какие выводы:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Ответ 8

json_decode($data, true); // Returns data in array format 

json_decode($data); // Returns collections 

Итак, если вам нужен массив, вы можете передать второй аргумент как 'true' в функции json_decode.

Ответ 9

в PHP json_decode конвертировать json-данные в связанный с PHP массив
Для Ex: $php-array= json_decode($json-data, true); print_r($php-array);

Ответ 10

Пожалуйста, попробуйте

<?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']);
?>

Ответ 11

Попробуйте вот так:

$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
}

Ответ 12

Я надеюсь, что это поможет вам

$json_ps = '{"courseList":[  
            {"course":"1", "course_data1":"Computer Systems(Networks)"},  
            {"course":"2", "course_data2":"Audio and Music Technology"},  
            {"course":"3", "course_data3":"MBA Digital Marketing"}  
        ]}';

Используйте функцию декодирования Json

$ json_pss = json_decode ($ json_ps, true);

Цикл по массиву JSON в PHP

foreach ($ json_pss ['courseList'] как $ pss_json) {

echo '<br>' .$course_data1 = $pss_json['course_data1']; exit; 

}

Результат: Компьютерные системы (сети)