Как прочитать JSON средствами PHP

Как прочитать 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:


Хочешь стать по-настоящему крутым разработчиком - обучайся в Hexlet.

Сергей Мочалов

Сергей Мочалов

Веб-разработчик. Создаю и поддерживаю сайты для клиентов с 2009 года

Комментарии