Как я могу декодировать JSON в PHP 5.1? - PullRequest
8 голосов
/ 03 марта 2010

Функция json_decode не является частью PHP 5.1, поэтому я не могу ее использовать. Есть ли другие функции для этой версии?

Ответы [ 8 ]

8 голосов
/ 03 марта 2010

До 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 - вы, возможно, захотите взглянуть на этот список.

6 голосов
/ 17 февраля 2011

Я столкнулся с той же проблемой при запуске PHP 5.1.6, но я не смог обновить или установить расширения на сервере моего клиента. Что еще хуже, сайт JSON.org был недоступен, когда мне было нужно решение, но, к счастью, этот файл в Google Code работал отлично! Я бы предпочел на самом деле определить json_encode / json_decode, но вызов из JSON () работал просто отлично.

http://code.google.com/p/simplejson-php/

3 голосов
/ 29 марта 2010

Вы видите эту ошибку, потому что у вас версия 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.

2 голосов
/ 31 июля 2013

На моем сервере я не могу установить расширение 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';

http://www.boutell.com/scripts/jsonwrapper.html

0 голосов
/ 07 октября 2015

Вы можете использовать jsonwrapper библиотека ...

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

Скачать здесь: jsonwrapper

Чтобы использовать, просто сделайте:

require ("jsonwrapper.php");


$data = array('idx1' => 'foo', 'idx2' => 'bar');

echo json_encode($data);

echo json_decode($data);
0 голосов
/ 10 мая 2014

У меня возникли проблемы с расширением Services_Json в PHP 5.1.3, поэтому я обнаружил следующую библиотеку:

https://github.com/alexmuz/php-json

Она находится под LGPL и после очень быстрого просмотране похоже на ввод данных.

0 голосов
/ 03 марта 2010

код

<?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; 
}  
} 
?>

предупреждение

это не проверено, я нашел его в интернете

ссылка

http://www.php.net/manual/en/function.json-decode.php#91216

0 голосов
/ 03 марта 2010

Zend Framework имеет Zend_Json. По крайней мере, так было пару лет назад.

http://framework.zend.com/download

Вы можете просто извлечь библиотеку JSON и использовать ее в автономном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...