php 5.1.6 json_encode 和 codeigniter

Posted

技术标签:

【中文标题】php 5.1.6 json_encode 和 codeigniter【英文标题】:php 5.1.6 json_encode and codeigniter 【发布时间】:2011-02-23 10:30:14 【问题描述】:

我正在构建一个使用 json_encode 在许多地方提供 ajax 数据的 codeigniter 应用程序......今天我了解到服务器有 php 5.1.6,它不支持这种方法(或 json_decode).. 我该怎么办?请帮忙。

【问题讨论】:

【参考方案1】:

upgradephp 中有一个 json_encode() 的模拟。只需包含()该脚本,您无需重写任何内容。 作为替代方案,您可以使用PEAR::PHP_Compat。 IIRC 它也有一个模拟。 (有further 替代实现浮动;但通常是对象样式的,速度不快,旨在模拟核心功能。)

您甚至可以使用auto_prepend_file= 设置它们。如果您只想启用 JSON 扩展,当然还有其他来源。

【讨论】:

好吧,我不知道那些存在。感谢您指出它们,我所拥有的经验是 Services_JSON 和 Zend_Json。 pear.php.net/package/PHP_Compat 有更好的代码,你可以只挑选你需要的任何功能;但目前还不够完整。实际上我认为 Zend_Json 更适合开发,因为它有错误报告。原生 PHP json_decode() 没有的地方。 那个 upgradephp 链接是黄金!【参考方案2】:

如果 CodeIgniter 可以使用 Services_JSON 而不是 PHP 5.2 的 json_* 函数,您可以使用它 - 我知道 Zend_Framework 有 Zend_Json,它使用 json_* 函数(如果可用),否则它在用户级 PHP 代码中使用自己的实现作为后备。

当然,如果您可以访问服务器编译 PHP,您可以尝试扩展或升级到 PHP 5.2(更好的解决方案)。

编辑:我会采取上述兼容层的路线。

【讨论】:

【参考方案3】:

json_decode 被添加是因为 (PHP 5 >= 5.2.0, PECL json >= 1.2.0),你的版本也支持它,你应该试一试: )

【讨论】:

【参考方案4】:

我需要 json_encode 和 json_decode 用于 jquery 网格。 我尝试了 upgradephp,但 json_encode 似乎不适用于 jquery 网格,所以我从文件中删除了该函数并添加了this one。 json_decode 似乎工作得很好。

【讨论】:

【参考方案5】:

事实上,5.1.6 支持 json_decode 和 json_encode,但它们可能有点奇怪。就像,如果你给它输入无效的 JSON,比如你有一个空白键,它就会死而没有任何警告或错误。但是我在 5.1.6 的环境中每天都使用 json_encode 和 json_decode。完全有可能。

【讨论】:

以上是关于php 5.1.6 json_encode 和 codeigniter的主要内容,如果未能解决你的问题,请参考以下文章

php json_encode数据格式化2种格式[]和{}

php中json_encode和json_decode的用法

PHP中json_encode()使用须知,JSON数组和JSON对象

php json_encode 函数造成浮点类型数据出现精度问题

PHP json_encode 变量如何转换成数组?

php7中json之json_encode函数用法