如何在PHP 5.1中解码json?

时间:2010-03-03 12:03:03

标签: php json parsing

json_decode函数不是PHP 5.1的一部分,所以我不能使用它。这个版本还有其他功能吗?

8 个答案:

答案 0 :(得分:8)

在PHP 5.2之前,您可以使用JSON PECL extension

实际上,它是已经集成到PHP 5.2 quoting中的扩展:

  

从PHP 5.2.0开始,JSON扩展名为   捆绑并编译成PHP   默认值。


其他一些解决方案是使用PHP开发的一些组件。

前一段时间(大约一年前),我使用了Zend_Json component of Zend Framework和PHP 5.1。

即使Zend Framework需要PHP 5.2,也可以提取该组件(我认为它仅依赖于另一个组件 - 可能是Zend_Exception,或类似的东西) - 和一年前,可以在PHP 5.1中使用它。


official JSON website还链接到几个基于PHP或面向PHP的组件 - 您可能希望查看该列表。

答案 1 :(得分:6)

我遇到了运行PHP 5.1.6的相同问题,但我无法在客户端的服务器上升级或安装扩展。更糟糕的是,当我需要一个解决方案时,JSON.org网站已关闭,但幸运的是,Google Code上的这个文件运行得非常好!我本来希望实际定义json_encode / json_decode,但调用fromJSON()工作得很好。

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

答案 2 :(得分:3)

您看到此错误,因为您的php版本早于5.2.0。这些函数在php 5.2.0及更高版本中为included by default

PHP Fatal error:  Call to undefined function json_encode()

您可以{:3}} install运行:

pecl install json

它会编译,然后将其添加到您的php.ini文件中:(我的位于/etc/php5/apache2

extension=json.so

然后重启apache。

答案 3 :(得分:2)

在我的服务器中,我无法安装JSON PECL扩展,因为它导致在另一个应用程序中使用的zend_json出现问题。所以我发现这个脚本完美无缺。

jsonwrapper:早期版本的PHP 5.x的json_encode

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

答案 4 :(得分:0)

Zend框架有Zend_Json。至少它在几年前就已经存在了。

http://framework.zend.com/download

您可以拔出JSON库并以独立方式使用它。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我在PHP 5.1.3上遇到了Services_Json扩展的问题,所以我找到了以下库:

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

它属于LGPL,经过快速查看似乎没有评估输入。

答案 7 :(得分:0)

您可以使用 jsonwrapper 库...

  

jsonwrapper实现json_encode函数,如果它丢失了,   如果它已经存在则不管它。所以很好   未来兼容。

在此下载: jsonwrapper

仅使用:

require ("jsonwrapper.php");


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

echo json_encode($data);

echo json_decode($data);