---------------------------------------------------------------------------------------------------------------------

php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array;若为false,返回object。如果返回NULL,说明报错,输出json_last_error(),得到的整数值对应错误提示。如图:

json_last_error()比较常见的是整数4, 是json字符串在json_decode之前已不完整,所以语法错误。

那么一定是客户端提交的个别字符影响了json的格式,可以使用JS进行过滤,可以解决一般问题,主要过滤回车,空格,html标签。

/*
* 过滤函数
* @黑眼诗人 <www.farwish.com>
*/
function htmlEncode(str) {
str = str.replace(/\s+/ig, '');
str = str.replace(/&/g, '');
str = str.replace(/</g, '');
str = str.replace(/>/g, '');
str = str.replace(/(?:t| |v|r)*n/g, '<br />');
str = str.replace(/t/g, '&nbsp; &nbsp; ');
str = str.replace(/x22/g, '&quot;');
str = str.replace(/x27/g, ''');
str = str.replace(/"/g, "");
return str;
}

以上情况针对的是,你必须提交json字符串数据到服务端处理,只能在客户端进行过滤。

其它的json_decode($str)返回NULL的一些原因:

1.$str只能UTF-8编码

2.元素最后不能有逗号(与php的array不同)

3.元素不能使用单引号

4.元素值中间不能有空格和\n,必须替换

如果遇到了此种情况,可以按照以上方式处理一遍。

Link: http://www.cnblogs.com/farwish/p/3940685.html

@黑眼诗人 <www.farwish.com>

[PHP]对Json字符串解码返回NULL的一般解决方案的更多相关文章

  1. 如何解析json字符串及返回json数据到前端

    前言:最近需要实现的任务是:写若干个接口,并且接口中的请求数据是json格式,然后按照请求参数读取前端提前整理好的json数据,并且将json数据返回到服务器端. 主要的工具:Gson  2.8.2 ...

  2. PHP中json_encode后,在json字符串中依然显示中文的解决方案

    <?php header("Content-Type:text/html;charset=utf-8;"); $arr = array ('Version_code'=> ...

  3. spring-data-jpa——如果使用了one-to-many,many-to-one的注解,在Jackson进行json字符串化时出现错误的解决方案

    参考资料: http://blog.csdn.net/remote_roamer/article/details/51330843 http://blog.csdn.net/xiaodaiye/art ...

  4. Java 从 Redis中取出的Json字符串 带斜杠的问题解决方案

    Java 从 Redis中取出的Json字符串 带斜杠的问题: { "code": 200, "message": "成功", " ...

  5. PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)

    本文主要为大家讲解了php在使用json_decode函数解码json字符串时,解码不成功返回NULL的问题原因分析和解决方法,感兴趣的同学参考下. 一般来说,php对json字符串解码使用json_ ...

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

    在用json_decode对JSON格式的字符串进行解码时竟然为空,页面空白啊,整半天检查这里检查那里,问同事都没用. 今天必应搜索了下,问题解决了,原来是有BOM头输出,大虾的解决办法如下: 1). ...

  7. 对Json字符串进行格式化显示

    很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定 ...

  8. IT兄弟连 JavaWeb教程 AJAX以及JSON字符串经典案例

    案例需求:客户端发送AJAX请求服务器端获取用户信息的数据. 案例实现: 在服务器端要将Java对象转换成JSON字符串,如果使用拼接JSON字符串的方式非常繁琐,并且非常容易出错,所以一般会借助第三 ...

  9. json字符串转JSONObject,输出JSONObject问题

    json架包:json-lib-2.4-jdk15.jar json字符串(存在null值)转JSONObject 后return JSONObject对象的时候会报错 例如: String str= ...

随机推荐

  1. springmvc使用步骤

    1.导包 2.在web.xml文件中配置前端控制器dispatchServlet 3.创建springmvc配置文件springmvc.xml 4.编写controller 5.在springmvc中 ...

  2. CRM4.0 上传附件大小限制

    问题背景: 上传附件大小默认为 5M 可以通过以下设置修改其大小 : "设置"--〉“管理”--〉“系统设置”--〉“电子邮件”--〉“设置附件文件的大小限制”

  3. C# SQL查询结果ToDataTable

    作者:卞功鑫 转载请保留:http://www.cnblogs.com/BinBinGo/p/6400944.html 最最常用的SQL 查询的返回结果,插入到DataTable 中 //1 连接字符 ...

  4. 绘制字母和数字组合的验证码(原生php)

    <?php $font = array('font/FZZQJW.TTF','font/STHUPO.TTF');//字体 $str = '689acdefhjkmnpqrtuvwxyACDEF ...

  5. 并发编程:GIL,线程池,进程池,阻塞,非阻塞,同步,异步

    一  GIL(global interpreter lock) GIL中文叫全局解释器锁,我们执行一个文件会产生一个进程,那么我们知道进程不是真正的执行单位,而是资源单位,所以进程中放有解释器(cpy ...

  6. Python笔记:Python中is和==的区别

    ==是比较两端的值 is是比较内存地址: 数据的内存地址可用id()获取 在Python中为了存储数据占用较小的内存,对于int类型和str类型内设了小数据池,其中的数据在被使用时,会使用同一内存地址 ...

  7. js数据类型 --运算符

    基本数据类型: number: var a=1; string: var str='123'; boolean: var b1=false; null:var c1=null; //打印结果为 obj ...

  8. 如何安装 Microsoft Office 兼容包,以便您可以在早期版本的 Microsoft Office 中打开和保存 Office Open XML 格式

    https://support.microsoft.com/zh-cn/kb/923505 针对 Office 2003 的支持已终止 Microsoft 已于 2014 年 4 月 8 日终止了针对 ...

  9. openStack cpu绑定

    来自:http://fishcried.com/2015-01-09/cpu_bindings/ 前一篇理解cpu topology对CPU Topology进行了学习总结,这里想总结下OpenSta ...

  10. 代码:jquery自定义插件 demo

    jquery自定义插件 demo 2016-1-13 只是一个简易的示例 <script type="text/javascript" src="http://cd ...