Как кодировать массив в JSON без json_encode ()?

Я очень новичок в PHP, но теперь я должен помочь своему другу решить проблему с PHP.

Он купил веб-сайт на основе PHP, после того как он загрузил его на хост, обнаружил, что есть ошибка:

Fatal error: Call to undefined function json_encode() in xxx.php 

Код очень прост:

 echo json_encode(array( 'result' => true, )); 

Он отправляет json клиенту.

Я знаю, что json_encode добавляется после php 5.2, но PHP-версия его хоста – это PHP 5.1.2, поэтому именно поэтому он сообщает об ошибке.

Но мы не имеем права обновлять PHP-версию хоста, поэтому мне нужно изменить код. Как вернуть Json клиенту без json_encode ?

Веб-страница в браузере клиента запустит этот код javascript, чтобы получить и проверить, что json:

 jQuery.ajax({ 'url': '...', ..., 'success':function(json) { if(json != null && json.result == true) { // do something } } } 

Большое спасибо!


ОБНОВИТЬ

Поскольку у меня нет прав на обновление или установка новых библиотек на этот хост, единственное, что я могу сделать, это изменить код. Но я почти ничего не знаю о php, что я не знаю, как использовать сторонние библиотеки. Наконец, я исправлю это так:

В php:

 echo '{"result":"true"}'; 

В javascript:

 if(json!=null && json.result=="true") { // do something } 

Прежде всего: вы должны серьезно рассмотреть возможность обновления, поскольку PHP 5.1.x и 5.2.x больше не поддерживаются. Вы указали, что у вас нет прав на это, но если вы платный клиент, это должно рассчитывать на что-то. PHP 5.2 устарел с последней версии PHP 5.3.6 .

Пользователь на PHP.net предоставил настраиваемую функцию, которая делает то же самое. Вы можете переименовать его в json_decode() и обернуть его в оператор if (!function_exists('json_encode')) :

 if (!function_exists('json_encode')) { function json_encode() { // do stuff } } 

У него старшая версия PHP, где отсутствует json_encode. Это можно исправить с помощью различных сторонних библиотек.

  • Датированный мой проект: http://include-once.org/p/upgradephp/, который предоставляет drop-in json_encode / json_decode почти идентичный встроенному расширению PHP (причудливый в отношении Unicode).
  • Затем есть https://pear.php.net/package/Services_JSON, который даже добавляет поддержку JSOL (Object Literals – надмножество JSON).
  • А также http://framework.zend.com/manual/en/zend.json.html, который предоставляет класс, обеспечивающий довольно тщательную повторную реализацию. (Вероятно, доступна самая лучшая версия).

Существует реализация, которую вы можете использовать в комментариях к документам PHP для json_encode .

Вы можете использовать стороннюю библиотеку JSON, такую ​​как один из проекта PEAR (они предоставляют всевозможные полезные библиотеки PHP различного качества):

http://pear.php.net/pepr/pepr-proposal-show.php?id=198

Я уверен, что есть еще (я бы попробовал поиск в Google для PHP JSON-библиотек).

Почему бы не использовать обычную json-библиотеку PHP, которую вы можете включить в каждую настройку?

Я искал это здесь для вас.

Прочитайте комментарии для json_encode по адресу http://www.php.net/manual/en/function.json-encode.php, где вы также найдете комментарий, содержащий ручную реализацию для php <5.2: http: //www.php. нетто / ручной / де / function.json-encode.php # 100835

Кроме того, существуют другие реализации, доступные через google.

jsonwrapper реализует функцию json_encode, если она отсутствует, и оставляет ее в покое, если она уже присутствует. Так что это красиво совместимо с будущим.

мне пришлось установить JSON Libs на днях на моем сервере, попробуйте следующее:

Выполните следующие команды:

  • pecl install json
  • touch /etc/php.d/json.ini
  • echo "extension=json.so" > /etc/php.d/json.ini
  • service httpd restart

Первый установит json-библиотеки на ваш компьютер, вторая строка создаст json.ini fiel в каталоге php.d, а последняя строка добавит extension=json.so строки extension=json.so в файл json.ini .

Надеюсь это поможет!