繁体   English   中英

如何在没有json_encode()的情况下将数组编码为JSON?

[英]How do I encode an array to JSON without json_encode()?

我对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
        }
    }
}

非常感谢!


UPDATE

由于我没有权利升级任何东西或安装新的库到该主机,我唯一能做的就是更改代码。 但我对php几乎一无所知,我也不知道如何使用第三方库。 最后,我修复它:

在PHP中:

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

在javascript中:

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

首先:您应该强烈考虑升级,因为不再支持PHP 5.1.x和5.2.x. 您表示您没有权利这样做,但如果您是付费客户,则应该有所收获。 上一个PHP 5.3.6版本开始,不推荐使用PHP 5.2。

PHP.net上的用户提供了相同的自定义功能 您可以将其重命名为json_decode()并将其包装在if (!function_exists('json_encode'))语句中:

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

他有一个较旧的PHP版本,其中缺少json_encode。 这可以通过各种第三方库来修复。

您可以使用json_encode的PHP文档的注释中发布的实现

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

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

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

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

我在这里用Google搜索了这个

http://www.php.net/manual/en/function.json-encode.php上阅读json_encode的注释,您还可以在其中找到包含php <5.2的手动实现的注释: http://www.php。净/手动/德/ function.json-encode.php#100835

此外,还有其他可通过谷歌实现。

jsonwrapper实现json_encode函数(如果它已丢失),如果它已经存在则保持不变 所以很好的未来兼容。

我不得不在我的服务器上安装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文件中。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM