Php загрузить файл json

Работа с JSON в PHP

JSON (JavaScript Object Notation) – текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар . Значение может быть массивом, числом, строкой и булевым значением.

В PHP поддержка JSON появилась с версии 5.2.0 и работает только с кодировкой UTF-8.

Кодирование

json_encode($value, $options) – кодирует массив или объект в JSON.

$array = array( '1' => 'Значение 1', '2' => 'Значение 2', '3' => 'Значение 3', '4' => 'Значение 4', '5' => 'Значение 5' ); $json = json_encode($array); echo $json;

Как видно кириллица кодируется, исправляется это добавлением опции JSON_UNESCAPED_UNICODE .

$json = json_encode($array, JSON_UNESCAPED_UNICODE); echo $json;

Далее такую строку можно сохранить в файл, или отдать в браузер, например при AJAX запросах.

header('Content-Type: application/json'); echo $json; exit();

Декодирование

Функция json_decode($json) преобразует строку в объект:

$json = ''; $array = json_decode($json); print_r($array);
stdClass Object ( [1] => Значение 1 [2] => Значение 2 [3] => Значение 3 [4] => Значение 4 [5] => Значение 5 )

Если добавить вторым аргументом true , то произойдёт преобразование в массив:

$json = ''; $array = json_decode($json, true); print_r($array);
Array ( [1] => Значение 1 [2] => Значение 2 [3] => Значение 3 [4] => Значение 4 [5] => Значение 5 )

Получение ошибок и их исправление

json_decode() возвращает NULL , если в объекте есть ошибки, посмотреть их можно с помощью функции json_last_error() :

$json = ''; $array = json_decode($json, true); switch (json_last_error())

Посмотреть значения констант JSON:

$constants = get_defined_constants(true); foreach ($constants['json'] as $name => $value) < echo $name . ': ' . $value . '
'; >
JSON_HEX_TAG: 1 JSON_HEX_AMP: 2 JSON_HEX_APOS: 4 JSON_HEX_QUOT: 8 JSON_FORCE_OBJECT: 16 JSON_NUMERIC_CHECK: 32 JSON_UNESCAPED_SLASHES: 64 JSON_PRETTY_PRINT: 128 JSON_UNESCAPED_UNICODE: 256 JSON_PARTIAL_OUTPUT_ON_ERROR: 512 JSON_PRESERVE_ZERO_FRACTION: 1024 JSON_UNESCAPED_LINE_TERMINATORS: 2048 JSON_OBJECT_AS_ARRAY: 1 JSON_BIGINT_AS_STRING: 2 JSON_ERROR_NONE: 0 JSON_ERROR_DEPTH: 1 JSON_ERROR_STATE_MISMATCH: 2 JSON_ERROR_CTRL_CHAR: 3 JSON_ERROR_SYNTAX: 4 JSON_ERROR_UTF8: 5 JSON_ERROR_RECURSION: 6 JSON_ERROR_INF_OR_NAN: 7 JSON_ERROR_UNSUPPORTED_TYPE: 8 JSON_ERROR_INVALID_PROPERTY_NAME: 9 JSON_ERROR_UTF16: 10

Если вы хотите распарсить JS объект из HTML страницы или файла, то скорее всего json_decode вернет ошибку т.к. в коде будут управляющие символы или BOM. Удалить их можно следующим образом:

$json = ''; // Удаление управляющих символов for ($i = 0; $i // Удаление символа Delete $json = str_replace(chr(127), '', $json); // Удаление BOM if (0 === strpos(bin2hex($json), 'efbbbf')) < $json = substr($json, 3); >$res = json_decode($json, true); print_r($res);

HTTP-запросы в формате JSON

Некоторые сервисы требуют чтобы запросы к ним осуществлялись в формате JSON, такой запрос можно сформировать в CURL:

$data = array( 'name' => 'snipp.ru' 'text' => 'Отправка сообщения', ); $ch = curl_init('https://example.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); $res = curl_exec($ch); curl_close($ch);

А также могут обратится к вашим скриптам в таком формате, чтение JSON запроса.

$data = file_get_contents('php://input'); $data = json_decode($data, true);

Источник

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

Admin 05.11.2017 , обновлено: 21.12.2017 PHP, WordPress

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

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

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

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

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

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

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

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

Просмотрим содержимое файла 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»
> > > >

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

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

В статье расписано, как разбирать данные json на php. Прочитайте статью и попробуйте сделать что в ней указано. Что касается технологии ajax, то вам отдельно придется её гуглить. На сайте кажется я её ещё не описывал.

Источник

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

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

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

Возможно вы знаете что данные в формате JSON (JavaScript Object Notation) могут храниться в виде файлов. Обычно они выглядят как — data.json . Фактически это текстовый файл содержащий данные и отформатированный в соответствии с правилами стандарта JSON в виде пары ключ-значение.

Пример JSON

Чтение файла средствами 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 года

Источник

Читайте также:  Free html editor coffeecup
Оцените статью