【发布时间】:2025-11-27 03:20:04
【问题描述】:
json_decode 函数不是 PHP 5.1 的一部分,所以我不能使用它。这个版本还有其他功能吗?
【问题讨论】:
json_decode 函数不是 PHP 5.1 的一部分,所以我不能使用它。这个版本还有其他功能吗?
【问题讨论】:
在 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 的组件——您可能想查看该列表。
【讨论】:
pecl install json;请注意,您可能需要分发版中的一些“开发”包;;;看看php.net/manual/en/install.pecl.php 可能也很有趣
我在运行 PHP 5.1.6 时遇到了同样的问题,但我无法在我的客户端服务器上升级或安装扩展。更糟糕的是,当我需要解决方案时,JSON.org 网站已关闭,但幸运的是,Google Code 上的这个文件运行良好!我更愿意实际定义 json_encode/json_decode,但调用 fromJSON() 就可以了。
【讨论】:
eval()构造了 JSON 字符串!
您看到此错误是因为您的 php 版本早于 5.2.0。这些函数在 php 5.2.0 及更高版本中为 included by default。
PHP Fatal error: Call to undefined function json_encode()
你可以通过运行installPECL extension:
pecl install json
它将编译,然后将其添加到您的 php.ini 文件中:(我的在 /etc/php5/apache2 中)
extension=json.so
然后重启apache。
【讨论】:
在我的服务器中,我无法安装 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';
【讨论】:
【讨论】:
<?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;
}
}
?>
这是未经测试的,我在互联网上找到的
我在 PHP 5.1.3 上遇到了 Services_Json 扩展的问题,所以我找到了以下库:
https://github.com/alexmuz/php-json
它在 LGPL 下,快速查看后似乎没有 eval 输入。
【讨论】:
您可以使用 jsonwrapper 库...
jsonwrapper 如果缺少 json_encode 函数,则实现它,并且 如果它已经存在,则不要理会它。所以很好 未来兼容。
在此处下载: jsonwrapper
使用只是做:
require ("jsonwrapper.php");
$data = array('idx1' => 'foo', 'idx2' => 'bar');
echo json_encode($data);
echo json_decode($data);
【讨论】: