在PHP5.2.6以前, json_decode一个字符串, 将会返回字符串本身.
php -r "var_dump(json_decode(laruence));" //输出 string(8)"laruence";
但是, 不知道是不是因为之前在php bug中, 有人提议对于这种情况, 因为字符串不是合法的json格式的串, 所以应该出错, 返回NULL(http://bugs.php.net/bug.php?id=45989). 所以在PHP5.2.11之后(具体是从哪个版本开始, 我回头再验证), 竟然返回NULL了.
php -r "var_dump(json_decode(laruence));" //输出 NULL
但值得注意的是, 对于numeric_string, 都是返回numeric_string的数值形式.
php -r "var_dump(json_decode(0x3f34));" //输出 int(16180)
另外, 在PHP5.3以后,可以通过json_last_error()来验证转换是否正确.
Comments2010/02/02, 雪候鸟 writes: 因为之前把几个PHP版本的安装路径搞混了, 看错了5.3的实现, 误以为5.3中和5.2.6一致, 抱歉给大家造成误解.2010/02/02, enjoy writes: 我在5.2.8下试了下。 php -r "var_dump(json_decode(laruence));" //输出 string(8) "laruence"2010/02/02, 雪候鸟 writes: @enjoy 我看到在5.2.9的release notes中有关于json_decode的, 但不是和这个相关的.2010/02/02, Deepseath writes: 类似这样频繁改动的函数,我会重新写个函数。呵呵,虽然麻烦但兼容性相对好一些,而且一旦确定环境了,进行优化也相对容易一些^_^2010/02/02, Anders writes: guoxiaod@guoxiaod>php -r var_dump(json_decode(""abc"")); string(3) "abc" guoxiaod@guoxiaod>php -v PHP 5.2.10-2ubuntu6.4 with Suhosin-Patch 0.9.7 (cli) (built: Jan 6 2010 22:41:56)2010/02/02, 雪候鸟 writes: @anderson 不要""abc"", 这里是指"abc", ;)2010/02/23, darasion writes: json_encode 有没有类似这样的问题?2010/03/07, RainChen writes: 一般都会把这些封装到一个类,用静态方法调用,如 JSON::decode() 这样一来可以方便管理(归类、增加相关的方法), 二来可以避免PHP升级后的接口变异。 缺点是比直接调用原生的函数慢一点,但对比带来的可维护性的好处,这点效率牺牲完全可以忽略Copyright
上一篇:我的新SPALDING
下一篇:西禅寺