чтение json файла php
Как прочитать JSON с помощью PHP
Формат JSON представляет из себя упорядоченную, определенным образом, информацию. Это альтернатива формату XML, с более минималистической структурой данных. О том, как прочитать эти данные через PHP.
JSON можно прочитать с помощью очень многих языков программирования. Здесь мы будем разбирать пример чтения содержимого файла посредством PHP.
Как прочитать содержимое файла
В переменную f_json заключаем адрес файла JSON:
Затем этот файл достаём по адресу указанному в f_json:
Если заглянуть в JSON файл напрямую, можно увидеть следующие данные:
Иногда в файле данные выглядят так:
Эта «неправильная» кодировка является символами Unicode, записанные в восьмибитной кодировке.
Просмотрим содержимое файла JSON в браузере:
В данном случае будет отдан массив в одну строчку. Ниже строчка разбита, для наглядности, на несколько строк.
Для чтения этих данных декодируем строки файла:
Теперь выведем объекты в этом файле. Например, мы хотим достать заголовок один, который находится под ключевым атрибутом title_one. Для этого воспользуемся следующей командой:
Мы сохранили данные в переменную title_one. Теперь с ними можно делать всё что угодно. Например, вывести её:
В этом случае будет показано:
Как получить значение через запятую в массиве данных файла JSON
Пример посложнее. Мы хотим достать отдельные данные для «items-1, items-2, items-3, items-4». Чтобы каждое значение было схвачено в отдельную переменную.
Для этого, сначала мы обратимся к этой строке:
Теперь требуется преобразовать данные из строки в массив. Воспользуемся функцией разбиения строки в PHP:
Теперь мы можем вывести отдельные элементы так:
Причем первое значение выводится с параметром [0]. Так исторически сложилось.
Ошибки при выводе JSON
Если вы сталкиваетесь с командой вроде:
Значит неправильно указан путь к данным.
Читайте также
Кстати, на сайте нет рекламы. У сайта нет цели самоокупаться, но если вам пригодилась информация можете задонатить мне на чашечку кофе в макдаке. Лайкнуть страницу или просто поблагодарить. Карма вам зачтется.
Комментарии к статье “ Как прочитать JSON с помощью PHP ” (2)
В статье расписано, как разбирать данные json на php. Прочитайте статью и попробуйте сделать что в ней указано.
Что касается технологии ajax, то вам отдельно придется её гуглить. На сайте кажется я её ещё не описывал.
JSON — текстовый файл описывающий данные. В котором массивы содержаться в [ ], а объекты в < >и в них все данные представлены в виде имя:значение.
Имя всегда указывается в кавычках «имя», а значение может быть таких видов:
— Числовое — целые или дробные с точкой.
— Строковое — текст в двойных кавычках.
— Логическое — true или false.
— Нулевое — null
— Другие (вложенные) массивы обернутые в [ ].
— Другие (вложенные) объекты обернутые в < >.
Значение одного уровня разделяются запятыми.
При всем этом объект состоит из:
<
«имя1» : «значение1»,
«имя2» : «значение2»,
«имя3» : «значение3»
>
А массив из:
[
«Значение1»,
«Значение2»,
«Значение3»
]
Вот как выглядит простой файл user.json:
Для работы с JSON в php имеются функции:
json_decode() — преобразовывает строку в объект или массив.
json_encode() — преобразовывает объект или массив в строку.
json_last_eror() — Возвращает результат преобразования.
Также рассмотрим такие функции как:
file_get_contents() — Читает содержимое файла в строку
Возможные ошибки при работе с json:
JSON_ERROR_NONE — Ошибок нет
JSON_ERROR_DEPTH — Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH — Неверный или не корректный JSON
JSON_ERROR_CTRL_CHAR — Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX — Синтаксическая ошибка
JSON_ERROR_UTF8 — Некорректные символы UTF-8, возможно неверная кодировка
JSON_ERROR_RECURSION — Одна или несколько зацикленных ссылок в кодируемом значении
JSON_ERROR_INF_OR_NAN — Одно или несколько значений NAN или INF в кодируемом значении
JSON_ERROR_UNSUPPORTED_TYPE — Передано значение с неподдерживаемым типом
Вот так мы считываем информацию из файла:
Вот что получиться:
Пользователь: Виталий Слюсар
Адрес: Украина, Днепропетровск, Дом:22
Контакты: +380 98 88 88 868, +380 98 88 88 868
А вот так мы заносим данные в файл json:
Скажите, пожалуйста, а записать информацию в json файл с помощью javascripta вообще реально, или для этих целей необходим именно серверный движок типа php?
Серверный движок для JS — Node
Большое спасибо за урок, искал информацию как создавать новый файл и записывать туда в формате json.
Очень доволен, что наткнулся на этот сайт. В инете огромное кол-во копипаста на тему json.
Здравствуйте.А возможно ли дописывать обьекты в массив.Не могли бы пример привести.За ранее благодарю.
Да возможно, для этого нужно сначала превратить json в массив, затем в этот массив с помощью функции push_array() добавить запись и снова превратить в json. Это самый простой способ
Здравствуйте, а есть пример. Заполняем форму и она записывает в массив. А дальше мы ее выводим на примере фронт для меню.
Вообще-то, если глянуть в документации, то file_put_contents() записывает в существующий файл либо создаёт его, если его не существует.
Дописывание можно осуществить с помощью флага FILE_APPEND.
По сути, file_put_contents состоит из связки fopen+fwrite+fclose
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
PHP и формат передачи данных JSON
JSON (JavaScript Object Notation) – формат для обмена данными в текстовом виде. Позволяющий передавать сложные структуры данных в сериализованном виде. Этот формат передачи данных стал настолько популярен, что уже в ядро PHP начиная с версии 5.2.0, были добавлены функции по обработке данных в этом формате. А это значит, что нет необходимости в подключении дополнительных расширений. Формат данных JSON хорошо понятен человеку. Кроме того данный тип обмена данными широко используется между различными API сервисами. А при корректной разработке алгоритмов для обмена информацией, можно получить очень высокий прирост скорости чем, к примеру, при работе с данными в формате XML.
Отправка данных
Отправить данные в формате JSON можно двумя способами: сформировать GET или POST запрос с закодированными данными расположенными в GET или POST переменной или же поместить данные в тело документа. На практике обычно используется второй вариант.
Для произведения отправки данных необходимы нижеперечисленные функции:
В качестве параметра value указываются данные которые требуется закодировать. Поддерживается любой тип кроме типа resource. Параметр options содержит битовую маску из возможных предоставленных значений (см. таблицу с предоставленными JSON константами).
Использование этой функции позволяет получить содержимое файла в виде строки. Параметр filename это имя считываемого файла. В параметре use_include_path начиная с версии PHP 5 можно использовать константу FILE_USE_INCLUDE_PATH для поиска файла в include path. Параметр context представляет ресурс контекста, созданный с помощью функции stream_context_create(). В случае неудавшейся попытки открытия файла, будет возвращено значение false. Параметр offset содержит смещение с которого начнется чтение данных. В параметре maxlen указывается размер получаемых данных.
Примечание: смещение не указывается при работе, с удаленными потоками.
Ниже приведен пример отправки данных в формате JSON:
Здесь используется импровизированная структура данных, состоящая из начальной и конечной даты, а также массива номеров некоторых условных записей. Обратите внимание на то, что в заголовке запроса Content-Type указывается тип “application/json”.
Получение данных
Для того чтобы получить переданные данные вышеописанным способом требуется произвести чтение данных из потока ввода “php://input”.
Используемые функции для принятия данных:
Ниже приведен пример получения данных в формате JSON на стороне сервера:
Полученная структура данных:
Примечание: необходимо учитывать тот момент, что для работы с форматом JSON, данные должны быть в кодировке utf-8.
Предоставленные JSON константы для функции json_encode()
JSON_HEX_TAG (integer) | Все кодируются в \u003C и \u003E. Доступна начиная с PHP 5.3.0. |
JSON_HEX_AMP (integer) | Все & кодируются в \u0026. Доступна начиная с PHP 5.3.0. |
JSON_HEX_APOS (integer) | Все символы ‘ кодируются в \u0027. Доступна начиная с PHP 5.3.0. |
JSON_HEX_QUOT (integer) | Все символы » кодируются в \u0022. Доступна начиная с PHP 5.3.0. |
JSON_FORCE_OBJECT (integer) | Выдавать объект вместо массива при использовании неассоциативного массива. Это полезно, когда принимающая программа или код ожидают объект или же массив пуст. Доступна начиная с PHP 5.3.0. |
JSON_NUMERIC_CHECK (integer) | Кодирование строк, содержащих числа, как числа. Доступна начиная с PHP 5.3.3. |
JSON_BIGINT_AS_STRING (integer) | Кодирует большие целые числа в виде их строковых эквивалентов. Доступна начиная с PHP 5.4.0. |
JSON_PRETTY_PRINT (integer) | Использовать пробельные символы в возвращаемых данных для их форматирования. Доступна начиная с PHP 5.4.0. |
JSON_UNESCAPED_SLASHES (integer) | Не экранировать /. Доступна начиная с PHP 5.4.0. |
JSON_UNESCAPED_UNICODE (integer) | Не кодировать многобайтные символы Unicode (по умолчанию они кодируются как \uXXXX). Доступна начиная с PHP 5.4.0. |
Список возможных режимов для fopen() используя mode
‘r’ | Открывает файл только для чтения; помещает указатель в начало файла. |
‘r+’ | Открывает файл для чтения и записи; помещает указатель в начало файла. |
‘w’ | Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует — пробует его создать. |
‘w+’ | Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует — пытается его создать. |
‘a’ | Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует — пытается его создать. |
‘a+’ | Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует — пытается его создать. |
‘x’ | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). |
‘x+’ | Создаёт и открывает для чтения и записи; иначе имеет то же поведение что и’x’. |
‘c’ | Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличии от ‘w’), и вызов к этой функции не вызывает ошибку (также как и в случае с ‘x’). Указатель на файл будет установлен на начало файла. Это может быть полезно при желании заблокировать файл (смотри flock()) перед изменением, так как использование ‘w’ может обрезать файл еще до того как была получена блокировка (если вы желаете обрезать файл, можно использовать функцию ftruncate() после запроса на блокировку). |
‘c+’ | Открывает файл для чтения и записи; иначе имеет то же поведение, что и ‘c’. |
Комментариев: 5
lavrik
30.04.2014 @ 10:37 дп
PHP read and write JSON from file
I have the following JSON in a file list.txt :
How do I add «bross»: <"first":"Bob","last":"Ross">to my file using PHP?
Here’s what I have so far:
Which gives me a Fatal error: Cannot use object of type stdClass as array on this line:
I’m using PHP5.2. Any thoughts? Thanks!
8 Answers 8
So change your call to
And it’ll return an associative array and your code should work fine.
The sample for reading and writing JSON in PHP:
This is how it is returned without the second parameter (as an instance of stdClass).
You need to make the decode function return an array by passing in the true parameter.
Try using second parameter for json_decode function:
This should work for you to get the contents of list.txt file
If you want to display the JSON data in well defined formate you can modify the code as:
When you want to create json format it had to be in this format for it to read:
Not the answer you’re looking for? Browse other questions tagged php json or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.30.40353
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
JSON в PHP
В этом уроке вы узнаете, как кодировать и декодировать данные JSON в PHP.
Что такое JSON
JSON расшифровывается как аббревиатура от J ava S cript O bject N otation. JSON — это стандартный текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар <ключ: значение>.
Синтаксис JSON на примерах
Объект JSON может выглядеть так:
Пример
В то время как пример массива JSON будет выглядеть примерно так:
Пример
PHP и JSON
Структуры данных JSON очень похожи на массивы PHP. В языке PHP существуют специальные функции для кодирования и декодирования данных JSON. Это функции json_encode() и json_decode() соответственно. Они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно. Обе функции работают только со строковыми данными в кодировке UTF-8.
Кодирование данных JSON в PHP
В PHP функция json_encode() используется для кодирования значения в формат JSON. Кодируемое значение может быть любым типом данных PHP, кроме ресурса, такого как база данных или дескриптор файла.
Синтаксис
Параметры
В приведенном ниже примере показано, как кодировать ассоциативный массив PHP в объект JSON:
Пример
Результат приведенного выше примера будет выглядеть так:
В следующем примере посмотрим, как будут кодироваться кириллические символы:
Пример
Результат приведенного выше примера будет выглядеть так:
Пример
Результат выполнения кода:
Точно так же вы можете закодировать индексированный массив PHP в массив JSON, например:
В следующем примере посмотрим, как будут кодироваться кириллические символы:
Пример
Результат выполнения кода:
Пример
Результат выполнения кода:
Примечание: Неассоциативный массив может быть закодирован как массив или объект. Однако ассоциативный массив всегда кодируется как объект.
Декодирование данных JSON в PHP
Функция PHP json_decode() используется для декодирования JSON в PHP. Эта функция возвращает значение, декодированное из json в соответствующий тип данных PHP.
Синтаксис
Параметры
В следующем примере показано, как декодировать или преобразовать объект JSON в объект PHP:
Пример
Результат выполнения кода:
Пример
Результат выполнения кода:
Доступ к декодированным значениям JSON в PHP
Теперь рассмотрим пример, который показывает, как декодировать данные JSON и получить доступ к отдельным элементам объекта JSON в PHP:
Пример
В этом примере показано, как получить доступ к отдельным элементам ассоциативного массива PHP:
Пример
Вы также можете перебирать декодированные данные с помощью цикла foreach(), например:
Пример
Извлечение значений из вложенных данных JSON в PHP
Объекты и массивы JSON также могут быть вложенными. Объект JSON может содержать другие объекты JSON, массивы, вложенные массивы, массивы объектов JSON и т.д. В следующем примере показано, как декодировать вложенный объект JSON и распечатать все его значения в PHP: