Декодирование JSON данных

Декодирование данных JSON так же просто, как и их кодирование. Вы можете использовать функцию PHP json_decode() для преобразования строки в кодировке JSON в соответствующий тип данных PHP. В следующем примере показано, как декодировать или преобразовать объект JSON в объект PHP.

<?php
// сохранение данных JSON в переменной PHP
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
var_dump(json_decode($json));
?>

Вывод вышеприведенного примера будет выглядеть примерно так:

object(stdClass)#1 (4) { ["Peter"]=> int(65) ["Harry"]=> int(80) ["John"]=> int(78) ["Clark"]=> int(90) }

По умолчанию функция json_decode() возвращает объект. Однако можно дополнительно указать второй параметр $assoc, который принимает булевое значение, при котором при установке в качестве true JSON объекты декодируются в ассоциативные массивы. По умолчанию оно равно false. Приведем пример:

<?php
// сохранение данных JSON в переменной PHP
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
var_dump(json_decode($json, true));
?>

Вывод вышеприведенного примера будет выглядеть примерно так:

array(4) { ["Peter"]=> int(65) ["Harry"]=> int(80) ["John"]=> int(78) ["Clark"]=> int(90) }

Теперь рассмотрим пример, который покажет, как декодировать JSON-данные и получить доступ к отдельным элементам JSON-объекта или массива в PHP.

<?php
// присвоение строки в кодировке JSON переменной PHP
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
// декодировать JSON данные в ассоциативный массив PHP
$arr = json_decode($json, true);
// доступ к значениям из ассоциативного массива
echo $arr["Peter"];  // вывод: 65
echo $arr["Harry"];  // вывод: 80
echo $arr["John"];   // вывод: 78
echo $arr["Clark"];  // вывод: 90
 
// декодировать JSON данные в объект PHP
$obj = json_decode($json);
// доступ к значениям из возвращенного объекта
echo $obj->Peter;   // вывод: 65
echo $obj->Harry;   // вывод: 80
echo $obj->John;    // вывод: 78
echo $obj->Clark;   // вывод: 90
?>

Также можно перебирать декодированные данные, используя цикл foreach():

<?php
// присвоение строки в кодировке JSON переменной PHP
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
// декодировать JSON данные в ассоциативный массив PHP
$arr = json_decode($json, true);
 
// цикл по ассоциативному массиву
foreach($arr as $key=>$value){
    echo $key . "=>" . $value . "<br>";
}
echo "<hr>";
// декодировать JSON данные в объект PHP
$obj = json_decode($json);
 
// перебираем объект в цикле
foreach($obj as $key=>$value){
    echo $key . "=>" . $value . "<br>";
}
?>

Была ли эта страница полезной?