Функция json_decode не является частью PHP 5.1, поэтому я не могу ее использовать. Есть ли другая функция для этой версии?
Перед PHP 5.2 вы можете использовать расширение JSON PECL .
Фактически это расширение, которое было интегрировано в PHP 5.2 ( цитирование ) :
Начиная с PHP 5.2.0, расширение JSON встраивается и компилируется в PHP по умолчанию.
Некоторые другие решения заключались бы в использовании некоторых компонентов, разработанных в PHP.
Некоторое время назад (около года назад) я использовал компонент Zend_Json
Zend Framework с PHP 5.1.
Даже если Zend Framework требует PHP 5.2, этот компонент может быть извлечен (я думаю, что это зависит только от одного другого компонента – возможно, от Zend_Exception
или что-то в этом роде), и год назад его можно было использовать с PHP 5.1.
Официальный сайт JSON также ссылается на несколько PHP-ориентированных или PHP-ориентированных компонентов – вы можете взглянуть на этот список.
Я столкнулся с тем же выпуском PHP 5.1.6, но не смог обновить или установить расширения на сервере моего клиента. Хуже того, сайт JSON.org был недоступен, когда мне было нужно решение, но, к счастью, этот файл в Google Code работал отлично! Я бы предпочел фактически определить json_encode / json_decode, но вызов fromJSON () работал отлично.
Вы видите эту ошибку, потому что у вас есть версия php раньше 5.2.0. Эти функции включены по умолчанию в php 5.2.0 и более поздних версиях.
PHP Fatal error: Call to undefined function json_encode()
Вы можете установить расширение PECL , выполнив:
pecl install json
Он будет компилироваться, а затем добавить это в файл php.ini
: (мой находится в /etc/php5/apache2
)
extension=json.so
Затем перезапустите apache.
На моем сервере я не могу установить расширение JSON PECL, потому что это вызывает проблему с zend_json, которая используется в другом приложении. Поэтому я нашел этот сценарий, который работает отлично.
jsonwrapper: json_encode для более ранних версий PHP 5.x
PHP 5.2 добавляет функцию json_encode
, которая превращает практически любую структуру данных PHP в действительный код JavaScript. Хэши, массивы, массивы хэшей, что угодно.
К сожалению, многие дистрибутивы Linux по-прежнему поставляются с PHP 5.1.x.
jsonwrapper реализует функцию json_encode
если она отсутствует, и оставляет ее в покое, если она уже присутствует. Так что это красиво совместимо с будущим.
Просто добавь:
require 'jsonwrapper.php';
Рамка Zend имеет Zend_Json. По крайней мере, это было несколько лет назад.
http://framework.zend.com/download
Вы можете просто вытащить библиотеку JSON и использовать ее в автономном режиме.
<?php if ( !function_exists('json_decode') ){ function json_decode($json) { // Author: walidator.info 2009 $comment = false; $out = '$x='; for ($i=0; $i<strlen($json); $i++) { if (!$comment) { if ($json[$i] == '{' || $json[$i] == '[') $out .= ' array('; else if ($json[$i] == '}' || $json[$i] == ']') $out .= ')'; else if ($json[$i] == ':') $out .= '=>'; else $out .= $json[$i]; } else $out .= $json[$i]; if ($json[$i] == '"') $comment = !$comment; } eval($out . ';'); return $x; } } ?>
это непроверено, я нашел его в Интернете
Я столкнулся с проблемами с расширением Services_Json на PHP 5.1.3, поэтому я нашел следующую библиотеку:
https://github.com/alexmuz/php-json
Это под LGPL, и после очень быстрого просмотра, похоже, не имеет значения для ввода.
Вы можете использовать библиотеку jsonwrapper …
jsonwrapper реализует функцию json_encode, если она отсутствует, и оставляет ее в покое, если она уже присутствует. Так что это красиво совместимо с будущим.
Скачать здесь: jsonwrapper
Чтобы использовать только что:
require ("jsonwrapper.php"); $data = array('idx1' => 'foo', 'idx2' => 'bar'); echo json_encode($data); echo json_decode($data);