Десериализация в JSON
Для десериализации (декодирование) перевод строки JSON в объект PHP можно использовать PHP-функцию json_decode()
. В следующем примере показано, как декодировать или преобразовать объект JSON
в объект 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
:
<?
// Хранение 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
:
<?
// Назначаем закодированную 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()
:
<?
// назначаем закодированную 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 . "
";
}
echo "
";
// декодируем JSON-данные в объект PHP
$obj = json_decode($json);
// цикл объекта
foreach($obj as $key=>$value){
echo $key . "=>" . $value . "
";
}