Как прочитать JSON средствами PHP?
Возможно вы знаете что данные в формате JSON
(JavaScript Object Notation) могут храниться в виде файлов. Обычно они выглядят как - data.json
. Фактически это текстовый файл содержащий данные и отформатированный в соответствии с правилами стандарта JSON в виде пары ключ-значение.
Пример JSON #
{
"name": "Super hero",
"town": "Metro City",
"formed": "2016",
"location": "Super tower"
}
Чтение файла средствами PHP #
Для того чтобы прочитать данные в файле JSON существует функция file_get_content
. В самом простом варианте достаточно передать в нее расположение файла JSON и сохранить данные в нужную нам переменную.
Давайте сделаем это и посмотрим что у нас получилось через var_dump
:
$ourData = file_get_content("data.json");
var_dump($ourData);
В результате работы вышеописанного кода PHP прочитает данные из файла в переменную $ourData и затем выведет ее содержание:
// Код отформатирован для удобства отображения
string(99) "{
"name": "Super hero",
"town": "Metro City",
"formed": "2016",
"location": "Super tower"
}"
Как видим, данные из файла JSON сохранились в переменную и по сути представляют из себя строку - string
Работать с чистой строкой не особо удобно, поэтому к нам на помощь приходит функция json_decode
применить которую можно в нескольких вариантах.
Преобразуем JSON в объект PHP #
Вызов функции json_decode
в простейшем варианте преобразит строку из файла JSON в PHP объект (Object)
// получаем данные из JSON файла
$ourData = file_get_contents("data.json");
// Преобразуем в объект
$object = json_decode($ourData);
var_dump($object); // выводим объект
В результате мы получим объект PHP:
object(stdClass)#1 (4) {
["name"]=>
string(10) "Super hero"
["town"]=>
string(10) "Metro City"
["formed"]=>
string(4) "2016"
["location"]=>
string(11) "Super tower"
}
И теперь мы можем обратиться к отдельным элементам объекта:
echo $object->name; // Выведет Super hero
echo $object->location; // Выведет Super tower
Преобразуем JSON в массив PHP #
Для преобразования в ассоциативный массив воспользуемся функцией json_decode
с булевым параметром:
// получаем данные из JSON файла
$ourData = file_get_contents("data.json");
// Преобразуем в массив
$array = json_decode($ourData, true);
var_dump($array); // выводим массив
PHP выведет на странице ассоциативный массив:
array(4) {
["name"]=> string(10) "Super hero"
["town"]=> string(10) "Metro City"
["formed"]=> string(4) "2016"
["location"]=> string(11) "Super tower"
}
Это позволяет нам теперь обращаться к отдельным данным массива:
echo $array["town"]; // выведет Metro City
Дополнительные материалы: #
В этом уроке мы использовали некоторые базовые функции PHP. Ниже ссылки на их документацию на официальном сайте PHP: