Работа с JSON
Вывести массив или объект в формате JSON можно через функцию json_encode()
.
$array = [ 'lang' => 'PHP', 'version' => '8.0.9' ]; json_encode($array); // {"lang":"PHP","version":"8.0.9"}
Данные в формате JSON можно хранить, например, в файлах или в базе данных.
Функция json_encode()
кодирует Юникод, т.е. русский текст преобразуется например в «\u0442\u0435». Чтобы данные возвращались в исходном виде, то добавляют параметр JSON_UNESCAPED_UNICODE
(доступна с версии PHP 5.4).
$data = ['City' => 'Москва']; json_encode($data); // {"City":"\u041c\u043e\u0441\u043a\u0432\u0430"} json_encode($data, JSON_UNESCAPED_UNICODE); // {"City":"Москва"}
Преобразовать JSON в объект можно через функцию json_decode()
.
$json = json_decode('{"lang":"PHP","version":"8.0.9"}'); $json->lang; // PHP $json->version; // 8.0.9
Если в json_encode()
будет передан пустой массив, то функция вернёт ответ в виде массива (т.е. не в формате JSON). В этой ситуации надо добавить параметр JSON_FORCE_OBJECT
.
json_encode([]); // [] json_encode([], JSON_FORCE_OBJECT); // {}
Вывести страницу как JSON
Если на странице выводится только JSON, то рекомендуется указывать заголовок «application/json». Данный заголовок позволит браузерам и приложениям обрабатывать текст как JSON.
// Вывести текущую страницу как JSON header('Content-Type: application/json'); $array = [ 'lang' => 'PHP', 'framework' => [ 'name' => 'Yii', 'version' => 2 ] ]; echo json_encode($array);
В браузере Firefox страница в формате JSON будет показываться как на картинке ниже:
Если бы не был задан заголовок «application/json», то Firefox вывел бы просто текст.
Также когда в JavaScript идёт запрос на страницу в формате JSON, то JavaScript уже получит данные в формате JSON (т.е. преобразовывать строку в JSON не нужно).
Авторизуйтесь, чтобы добавлять комментарии