`
willko
  • 浏览: 386728 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

php里json_decode无法解析的情况,返回空(null)

    博客分类:
  • php
阅读更多
我的版本是5.2.x,php的json解析也太烂了,兼容性太差了。

一、只能使用双引号(")
在JSON里只用"来表示字符串,例如
{'aa':'sdf'}
'adf'
['1', '2']

这些使用'的统统不能解析,而且对象的属性也必须用",也就是只能用双引号..
直接用str_replace("'", '"', $json) 来替换就好了,,不过就是会把所有单引号转换为双引号

二、不能有多余的逗号(,)
例如,
[1,2,]
{"a":1,"b":2,}

这个我记得ie6里也是不支持的,会出错。
用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $json)

三、不支持一些转义
字符的表示方式方式有很多种,但下面的都不支持
\x26

因为php也支持这种十六进制方式,所以可以用eval来达到转义效果。

如果是中文的注意,要用utf-8

json标准http://www.ietf.org/rfc/rfc4627.txt?number=4627
分享到:
评论
6 楼 willko 2010-04-07  
小将将 写道
其实JSON是一种标准,JSON的标准就是要用双引号来表示字符串,不能用单引号来表示字符串。
同理,标准的JSON也不应该出现多余的逗号的。

找到JSON标准了。。
http://www.ietf.org/rfc/rfc4627.txt?number=4627
5 楼 willko 2010-04-07  
小将将 写道
其实JSON是一种标准,JSON的标准就是要用双引号来表示字符串,不能用单引号来表示字符串。
同理,标准的JSON也不应该出现多余的逗号的。

不是啊。。在javascript字符串可以用'和"来表示啊。
4 楼 小将将 2010-04-07  
其实JSON是一种标准,JSON的标准就是要用双引号来表示字符串,不能用单引号来表示字符串。
同理,标准的JSON也不应该出现多余的逗号的。
3 楼 willko 2009-08-13  
xieye 写道
跟你的理解不一样,我认为5。2。6版本太好了,包括那两个新增的json函数,我以前用过,感觉很好


我说的是json_decode这个函数,只是你没遇到问题而已。
2 楼 willko 2009-08-13  
xieye 写道
跟你的理解不一样,我认为5。2。6版本太好了,包括那两个新增的json函数,我以前用过,感觉很好


晕,我是说php的json解/编码烂,,很多兼容不行,,我举的那几个例子,你可以试下,用json_decode是无法解析的。

因为,最近需要解析来自.net/java之类生成的json....才发现这些问题
1 楼 xieye 2009-08-13  
跟你的理解不一样,我认为5。2。6版本太好了,包括那两个新增的json函数,我以前用过,感觉很好

相关推荐

    PHP 获取JSON json_decode返回NULL解决办法

    PHP 获取JSON json_decode返回NULL解决办法,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,这样处理才能正确解析json数据

    Json_decode 解析json字符串为NULL的解决方法(必看)

    但是有时候我们会发现,即使是看似完整的JSON字符串,在使用`json_decode()`函数解析后返回的却是NULL,这会让人困惑。这篇文章将会详细探讨在使用PHP的`json_decode()`函数解析JSON字符串遇到NULL返回值时的解决...

    PHP json_encode() 和 json_decode()

    它接收一个JSON字符串作为参数,可以返回一个数组、对象或者NULL,这取决于第二个可选参数`$assoc`。当`$assoc`设置为`true`时,JSON对象会被解码为关联数组,否则会解码为PHP对象: ```php $jsonString = '{"name...

    PHP json_encode与json_decode.rar

    JSON是一种轻量级的数据交换格式,因其简洁、易读且易于机器解析而被广泛应用于Web服务和前后端数据交互。 **一、json_encode** `json_encode`函数将PHP变量转换为JSON格式的字符串。其基本语法如下: ```php ...

    PHP程序设计-3期(KC016) 3.7.2JSON_DECODE常见问题.docx

    所以,当尝试使用`json_decode()`解析包含单引号的字符串时,PHP会返回NULL,因为这不是有效的JSON格式。解决这个问题的方法是将单引号替换为双引号,正确的JSON字符串应写作: ```php $jsonStr = '{"stuName": ...

    PHP json_decode函数详细解析

    在实际应用中,有时可能会遇到`json_decode`返回`null`的情况。这通常是因为输入的JSON字符串格式不正确。在提供的示例中,问题在于原始字符串中的键没有使用双引号包围,如`{'stauts':'1','message':'充值成功'}`。...

    PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠

    如果在进行了上述所有操作后,`json_decode()`函数仍然返回`NULL`,那么可能是因为JSON字符串中存在不可见的特殊字符或者格式问题。这时候需要仔细检查JSON字符串,确保格式的正确性,特别是确保所有的双引号`"`都...

    php json_encode与json_decode详解及实例

    - 对于JSON格式错误的字符串,`json_decode`会返回`NULL`,需要检查返回值确保数据正确解析。 总结来说,`json_encode`与`json_decode`是处理JSON数据的基本函数,它们在PHP开发中非常常见,尤其是在处理Web API或...

    关于php中的json_encode()和json_decode()函数的一些说明

    本文针对PHP中的json_encode()和json_decode()函数进行详细说明。这两个函数在PHP开发中广泛使用,用于在JavaScript Object Notation (JSON)格式与PHP数据类型之间转换。了解这两个函数的用法,对于实现前后端数据...

    浅析php中json_encode()和json_decode()

    需要注意的是,json_decode()在解析JSON字符串时,如果遇到格式错误可能会返回null,并且通过json_last_error()函数可以获取解析错误的详细信息,以便进行调试。 总结来说,json_encode()和json_decode()函数是PHP...

    php5.2以下版本无json_decode函数的解决方法

    在早期的PHP版本中,尤其是PHP5.2以下的版本,并没有内置json_decode这个函数,该函数用于将JSON格式的字符串转换成PHP中的数组或对象。随着网络技术的发展和Web API的普及,JSON数据格式变得越来越重要,因此,缺少...

    json for PHP4.0

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在PHP中,JSON常用于与前端交互,传输数据。PHP 4.0版本虽然相对较旧,但仍然可以处理JSON数据,只是...

    对json类型的数据进行解析

    在解析过程中,如果JSON格式不正确,`JSON.parse()` 和 `json_decode()` 会抛出错误。因此,应该始终捕获并处理这些错误,以确保代码的健壮性。例如: ```javascript try { var jsonObject = JSON.parse(json...

    php下的json字符串转化讲解共3页.pdf.zip

    - 当使用`json_decode()`时,PHP会尝试将JSON对象解析为PHP对象(如果`$assoc`为`false`),或关联数组(如果`$assoc`为`true`)。 6. JSONP(JSON with Padding) - JSONP是一种跨域数据交互协议,它利用了`...

    json解析在js和php中的不同

    JSON(JavaScript Object Notation)是一种轻量级的...同时,注意错误处理,例如在JavaScript中使用`try...catch`捕获`JSON.parse()`可能抛出的异常,在PHP中检查`json_decode()`返回的`false`,以确定是否成功解析。

Global site tag (gtag.js) - Google Analytics