Как прочитать JSON с помощью PHP

Admin PHP, WordPress 2 комментария

Формат JSON представляет из себя упорядоченную, определенным образом, информацию. Это альтернатива формату XML, с более минималистической структурой данных. О том, как прочитать эти данные через PHP.

JSON можно прочитать с помощью очень многих языков программирования. Здесь мы будем разбирать пример чтения содержимого файла посредством PHP.

Как прочитать содержимое файла

В переменную f_json заключаем адрес файла JSON:

$f_json = 'http://ploshadka.net/wp-content/uploads/3284/ploshadka.net.json';

Затем этот файл достаём по адресу указанному в f_json:

$json = file_get_contents("$f_json");

Если заглянуть в JSON файл напрямую, можно увидеть следующие данные:

{"response":{"items":[{"id":"1331","title_one":"Данные заголовка один","title_two":"Данные заголовка два","Год":"2056","Items":"items-1, items-2, items-3, items-4"}]}}

Иногда в файле данные выглядят так:

"{"response":{"items":[{"id":"1331","title_one":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043e\u0434\u0438\u043d","title_two":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0434\u0432\u0430","\u0413\u043e\u0434":"2056","Items":"items-1, items-2, items-3, items-4"}]}}\n"string(395) ""{"response":{"items":[{"id":"1331","title_one":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043e\u0434\u0438\u043d","title_two":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0434\u0432\u0430","\u0413\u043e\u0434":"2056","Items":"items-1, items-2, items-3, items-4"}]}}\n""

Эта «неправильная» кодировка является символами Unicode, записанные в восьмибитной кодировке.

Просмотрим содержимое файла JSON в браузере:

var_dump(json_decode($json));

В данном случае будет отдан массив в одну строчку. Ниже строчка разбита, для наглядности, на несколько строк.

object(stdClass)#3896 (1)
{ ["response"]=> object(stdClass)#3324 (1)
{ ["items"]=> array(1) { [0]=> object(stdClass)#3330 (5)
{ ["id"]=> string(4) "1331"
["title_one"]=> string(40) "Данные заголовка один"
["title_two"]=> string(38) "Данные заголовка два"
["Год"]=> string(4) "2056"
["Items"]=> string(34) "items-1, items-2, items-3, items-4"
} } } }

Для чтения этих данных декодируем строки файла:

$obj = json_decode($json,true);

Теперь выведем объекты в этом файле. Например, мы хотим достать заголовок один, который находится под ключевым атрибутом title_one. Для этого воспользуемся следующей командой:

$title_one = $obj['response']['items'][0]['title_one'];

Мы сохранили данные в переменную title_one. Теперь с ними можно делать всё что угодно. Например, вывести её:

echo $title_one;

В этом случае будет показано:

Данные заголовка один

Как получить значение через запятую в массиве данных файла JSON

Пример посложнее. Мы хотим достать отдельные данные для «items-1, items-2, items-3, items-4». Чтобы каждое значение было схвачено в отдельную переменную.

Для этого, сначала мы обратимся к этой строке:

$json_items = $obj['response']['items'][0]['Items'];

Теперь требуется преобразовать данные из строки в массив. Воспользуемся функцией разбиения строки в PHP:

$arr = explode(", ", $json_items);

Теперь мы можем вывести отдельные элементы так:

echo $arr[0];
echo $arr[1];
echo $arr[2];
echo $arr[3];

Причем первое значение выводится с параметром [0]. Так исторически сложилось.

Ошибки при выводе JSON

Если вы сталкиваетесь с командой вроде:

Notice: Undefined index: title_one in /folder1/folder2/folder3/file.php on line 23

Значит неправильно указан путь к данным.

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Комментарии к статье “Как прочитать JSON с помощью PHP” (2)

  • Аватар
    Макс
    04.03.2019 в 19:30

    Привет ! подскажи пожалуйста, есть такая задача, скачать и разобрать данные в виде JSON при помощи PHP. Сгенерировать в html страницу , есть ссылка откуда брать json, как это вообще сделать ?? Готовая программа должна скачивать эти данные с файла c помощью ajax

    • Admin
      Admin
      Автор записи
      05.03.2019 в 08:48

      В статье расписано, как разбирать данные json на php. Прочитайте статью и попробуйте сделать что в ней указано.

      Что касается технологии ajax, то вам отдельно придется её гуглить. На сайте кажется я её ещё не описывал.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Как прочитать JSON с помощью PHP"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>