JSON to PHP array массив: как быстро конвертировать данные

JSON - популярный формат обмена данными в веб-разработке. Но иногда нужно преобразовать JSON в PHP массивы для дальнейшей работы. В этой статье мы рассмотрим способы быстрого преобразования JSON данных в PHP массивы. Узнаете, какие есть встроенные функции, онлайн инструменты и best practices. Получите практические советы и примеры кода для решения этой распространенной задачи.

Портрет программиста за работой

Основы работы с JSON в PHP

JSON (JavaScript Object Notation) - текстовый формат обмена данными, основанный на JavaScript. JSON использует пары "ключ": "значение" и простые структуры данных как массивы и объекты. Благодаря простоте и удобочитаемости, JSON стал де-факто стандартом для передачи данных в вебе.

JSON структуры данных:

  • Объект - набор пар ключ/значение в фигурных скобках {}
  • Массив - упорядоченный список значений в квадратных скобках []
  • Значение - строка, число, логическое значение, null

В PHP поддержка JSON появилась в версии 5.2.0. JSON в PHP работает только с кодировкой UTF-8. Для работы с JSON в PHP есть две основные функции:

  • json_encode - кодирует данные из PHP в JSON
  • json_decode - декодирует данные JSON в PHP переменные
Ночная улица с вывесками JSON, XML, PHP

Кодирование в JSON

Функция json_encode конвертирует данные из PHP (массив, объект) в JSON строку. Например:

 $data = array('name' => 'John', 'age' => 30); $json = json_encode($data); 

Результат в $json:

{ "name": "John", "age": 30 }

Обратите внимание, что ключи в результирующем JSON заключены в двойные кавычки. Это обязательное требование формата JSON.

Также, по умолчанию русские буквы будут закодированы. Чтобы избежать этого, нужно передать опцию JSON_UNESCAPED_UNICODE:

 $json = json_encode($data, JSON_UNESCAPED_UNICODE); 

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

Функция json_decode конвертирует JSON строку в переменные PHP. Например:

 $json = '{"name":"Иван","age":35}'; $data = json_decode($json); 

После этого в переменной $data будет объект со свойствами name и age.

Чтобы получить массив вместо объекта, нужно передать true в качестве второго параметра:

 $data = json_decode($json, true); 

Теперь в $data будет массив с ключами name и age. Это часто более удобный формат для дальнейшей работы в PHP.

Обработка ошибок

Функция json_decode может вернуть NULL если JSON содержит ошибки. Чтобы проверить это, используем:

 $data = json_decode($invalidJson); if($data === null) { echo json_last_error(); } 

Функция json_last_error() вернет код ошибки. А json_last_error_msg() - текст ошибки для вывода пользователю.

В этом разделе мы рассмотрели основы работы с JSON в PHP - функции кодирования/декодирования данных и обработку ошибок. Это фундамент для решения более сложных задач, которые мы разберем далее.

Конвертация JSON в PHP массивы

Давайте теперь более детально разберем способы конвертации данных из JSON в PHP массивы. Это часто требуется перед дальнейшей работой с данными в PHP.

Базовый способ

Самый простой способ - использовать json_decode и передать true в качестве второго параметра:

 $json = '{"product":"Table","price":1200}'; $data = json_decode($json, true); 

После этого $data будет массивом с ключами "product" и "price".

Работа с вложенным JSON

Если JSON содержит вложенные объекты/массивы, можно указать параметр глубины декодирования:

 $json = '{"product":{"name":"Table","price":1200}}'; $data = json_decode($json, true, 2); 

Здесь мы указали глубину 2, чтобы преобразовать и вложенный объект "product" в массив.

Данные JSON из внешних источников

Часто JSON приходит из внешних источников - API, файлов. В этом случае нужно:

  1. Получить JSON строку (например, через file_get_contents)
  2. Декодировать с помощью json_decode
 $json = file_get_contents('data.json'); $data = json_decode($json, true); 

Обязательно проверяйте корректность полученного JSON перед декодированием.

Удаление управляющих символов

Иногда JSON из внешних источников может содержать управляющие символы, которые сломают декодирование. В этом случае их нужно предварительно удалить:

 $json = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $externalJson); $data = json_decode($json, true); 

Таким образом мы гарантируем, что декодирование пройдет успешно.

AJAX запросы

При работе с AJAX часто требуется декодировать JSON из запроса. Для этого в обработчике AJAX используем:

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

Таким образом мы получим массив с данными запроса.

В этом разделе мы узнали основные приемы для конвертации входящих данных JSON в PHP массивы для дальнейшей работы.

Конвертация PHP массива в JSON

Рассмотрим теперь способы конвертации в обратную сторону - из PHP массива в JSON. Это может потребоваться, например, для отдачи данных в ответ на AJAX запрос или для сохранения в файл.

Базовый способ

Для преобразования PHP массива в JSON используем функцию json_encode:

 $data = ['name' => 'John', 'age' => 25]; $json = json_encode($data); 

В переменной $json будет JSON строка готовая для вывода или сохранения:

{"name":"John","age":25}

Форматирование

По умолчанию json_encode генерирует минифицированный JSON без отступов. Чтобы добавить отступы, используем параметр JSON_PRETTY_PRINT:

 $json = json_encode($data, JSON_PRETTY_PRINT); 

Также можно указать количество пробелов для отступа:

 $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 

Это сгенерирует более читаемый форматированный JSON.

Генерация минифицированного JSON

Чтобы получить minified JSON без лишних символов, используем опцию JSON_UNESCAPED_SLASHES:

 $json = json_encode($data, JSON_UNESCAPED_SLASHES); 

Это удалит слэши экранирования и сэкономит объем данных для передачи.

Таким образом, мы рассмотрели основные способы генерации JSON из PHP массивов с нужным форматированием.

Инструменты

Помимо родных функций PHP, существуют удобные онлайн инструменты для конвертации данных из JSON в PHP массивы и обратно:

  • JSON to PHP Array - https://www.wtools.io/json-to-php-array
  • Online JSON tools - https://www.json.toolz.io
  • JSON/PHP Converter - https://www.appdevtools.com/json-php-converter

Они позволяют быстро конвертировать данные прямо в браузере и скачать результат. Могут сэкономить время при работе с JSON.

В этой статье мы детально разобрали способы конвертации данных из JSON в PHP массивы и наоборот. Теперь вы знаете как использовать встроенные функции PHP и онлайн инструменты для решения этих задач. Эти знания помогут эффективно работать с JSON в ваших PHP проектах.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.