【问题标题】:How do I encode an array to JSON without json_encode()?如何在没有 json_encode() 的情况下将数组编码为 JSON?
【发布时间】:2011-03-25 10:48:52
【问题描述】:

我对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_encode的情况下向客户端返回一个json?

客户端浏览器中的网页将运行此 javascript 代码,以获取并检查该 json:

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

非常感谢!


更新

由于我无权升级任何东西或在该主机上安装新库,我唯一能做的就是更改代码。但我对 php 几乎一无所知,我也不知道如何使用 3rd 方库。最后,我将其修复为:

在php中:

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

在javascript中:

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

【问题讨论】:

标签: php json


【解决方案1】:

首先:您应该强烈考虑升级,因为不再支持 PHP 5.1.x 和 5.2.x。您表示您无权这样做,但如果您是付费客户,那应该算一些东西。自 last PHP 5.3.6 release 起,PHP 5.2 已被弃用。

PHP.net 上的用户提供了一个custom function,它的作用相同。 您可以将其重命名为 json_decode() 并将其包装在 if (!function_exists('json_encode')) 语句中:

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

【讨论】:

    【解决方案2】:

    他有一个缺少 json_encode 的旧 PHP 版本。这可以通过各种 3rd 方库来解决。

    【讨论】:

      【解决方案3】:

      json_encode 的 PHP 文档的 cmets 中发布了 an implementation you can use。

      【讨论】:

        【解决方案4】:

        您可以使用第三方 JSON 库,例如 PEAR 项目中的那个(它们提供各种有用的 PHP 库,质量参差不齐):

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

        我确定还有更多(我会尝试在 Google 上搜索 PHP JSON 库)。

        【讨论】:

          【解决方案5】:

          为什么不使用可以在每个设置中包含的普通 PHP json 库?

          我用谷歌搜索了this 一个给你的。

          【讨论】:

            【解决方案6】:

            在http://www.php.net/manual/en/function.json-encode.php 阅读 json_encode 的 cmets,您还可以在其中找到包含 php http://www.php.net/manual/de/function.json-encode.php#100835

            此外,还有其他可通过 google 获得的实现。

            【讨论】:

              【解决方案7】:

              jsonwrapper 如果缺少 json_encode 函数,则实现它,如果它已经存在,则不理会它。所以它很好地兼容未来。

              【讨论】:

                【解决方案8】:

                前几天我不得不在我的服务器上安装 JSON Libs,尝试以下方法:

                执行以下命令:

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

                第一行将 json 库安装到您的机器上,第二行将在 php.d 目录中创建 json.ini 文件,最后一行将extension=json.so 行添加到json.ini 文件中。

                希望这会有所帮助!

                【讨论】:

                • 假设他没有升级 PHP 的权限,有一点机会他没有控制台访问权限和安装 PECL 库的权限。
                • 这仍然是我的答案,他可以将其转发给他的托管服务提供商,他们可能会毫不犹豫地这样做。
                猜你喜欢
                • 2016-06-02
                • 2018-06-02
                • 2021-02-22
                • 1970-01-01
                • 1970-01-01
                • 2020-02-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多