БлогNot. PHP и JSON: легко ли их подружить?

PHP и JSON: легко ли их подружить?

Вот здесь я уже упоминал об удобстве "родного" для Javascript и AJAX-приложений текстового формата JSON.

Легко ли "подружить" JSON и PHP? В принципе, да, потому что в стандарте языка имеются функции json_decode и json_encode, которые могут, соответственно, получить строку JSON и преобразовать её в объект (или массив) PHP и наоборот, преобразовать объект, содержащий данные JSON (в том числе, массив) в строку с JSON-представлением.

Эти функции работают, начиная с версии PHP 5.2, то есть, практически на любом современном хостинге. Данные должны быть обязательно в Юникоде (UTF-8). Ключ и значение любой JSON-записи в исходных данных должны помещаться в "двойные кавычки", 'одинарные' использовать нельзя. Увы, если в файле JSON есть символы национальных алфавитов, версии PHP 5.2 может и не хватить. Опции JSON_UNESCAPED_UNICODE (не кодировать многобайтовые символы Unicode к виду \uXXXX) и JSON_UNESCAPED_SLASHES (не экранировать слеши) появились в PHP 5.4, так что на локальном хосте должна быть версия не ниже.

Далее показан небольшой скрипт, который берёт JSON-данные из файла с именем data.json, расположенного в его текущей папке, и преобразует их в массив PHP, который затем рекурсивно выводится в браузер. После этого к массиву применяется "обратное действие" и он пакуется в строку, содержащую данные JSON. Листинг показывает также элементарную обработку ошибок чтения JSON-данных на PHP.

Файл data.json - тот же самый, что в исходной заметке. Предполагается, что в папку скрипта также помещён файл .htaccess с директивой

AddDefaultCharset utf-8

Код .php самого скрипта:

<?php
 $data = file_get_contents ('data.json');
 if ($data === false) {
  echo 'Файл data.json не найден';
  exit ();
 }
 $json = json_decode($data, true); //Вернуть массив с JSON-данными
 if (json_last_error() === JSON_ERROR_NONE) { //Нет ошибки - вывести данные рекурсивно
  array_walk_recursive ($json, function ($item,$key){ echo "\"$key\": \"$item\"<br>\n"; });
 } 
 else { //Сообщить об ошибке и выйти
  echo 'Ошибка чтения JSON: '.json_last_error().','.json_last_error_msg()."<br>\n";
  exit ();
 } 
 echo json_encode ($json,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  //Вывести JSON-объект как строку с кириллицей, нужен PHP 5.4 и выше
?>

 Скачать архив .zip с папкой скрипта jsonphp (1 Кб)

29.12.2017, 12:14 [2413 просмотров]


теги: php форматы

К этой статье пока нет комментариев, Ваш будет первым