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

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. PHP对Json字符串解码返回NULL的一般解决方案

    php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array:若为false,返回object.如果返回NULL,说明报错,输出json_l ...

  2. C语言实现JSON字符串解码与编码(三)源代码

    申请/释放空间 因为JSON对象与字符串需要在堆上申请/释放空间,故定义2个函数指针变量来存在函数地址. static void* (*JSON_malloc)(size_t _Size);//申请空 ...

  3. 从永远到永远-JSON转JSON字符串值为null的处理

    JSON转JSON字符串值为null的处理 1.需求 2.处理 3.其他问题 1.需求 应要求,将某上古接口数据存入了redis缓存,原接口返回数据格式是Map<String,Object> ...

  4. JSON.toJSONString格式化成json字符串时保留null属性

    第一篇   JSON.toJSONString格式化成json字符串时保留null属性 原文:https://blog.csdn.net/qq_34412985/article/details/819 ...

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

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

  6. python接口返回json处理_python 接口返回的json字符串实例

    如下所示: JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数描述 json.dumps将 Python 对象编码成 JSON 字符串 json.loads将已 ...

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

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

  8. json字符串多了双引号_Python-数据解析-json模块 !

    import json json 一种轻量级的数据交换格式. 一.JSON 的值 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) ...

  9. Python 中的json字符串以及使用

    1.什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个 ...

最新文章

  1. DeepMind提出基于视觉的强化学习模型,十八般兵器对机器人不在话下
  2. motan rpc java demo_轻量级RPC框架-motan
  3. hdu3699(不等式dfs)
  4. 抓取扑克之星免费赛玩家排行榜
  5. java 反查域名_C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)
  6. 获取本机IP地址[JavaScript / Node.js]
  7. λ表达式_Java 8新特性:学习如何使用Lambda表达式,一看必懂
  8. 自定义函数_python3基础07函数(自定义)
  9. 内存泄露从入门到精通三部曲之排查方法篇
  10. Linux curl命令
  11. python怎么创建变量balance_在Python中将变量从一个函数修改为另一个函数
  12. 深入理解JVM之JVM内存区域与内存分配
  13. 例4.3 数制转换 - 九度教程第44题(进制转换)
  14. 功能强大的pdf控件,用户无需安装任何软件即可使用
  15. 900款工作岗位竞聘PPT模板免费下载
  16. 用力过猛的“中产阶级教育
  17. html中如何设计圆形图案,纯CSS绘制漂亮的圆形图案效果
  18. 为自己的站点实现访客统计
  19. 次世代建模师电脑里面收藏的素材共享
  20. CVE-2019-2725

热门文章

  1. Python序列化的使用(有少量修改)
  2. 云宏大讲坛 | 容器的前世今生
  3. 浅谈Java泛型中的? extends E和?super E
  4. GVRP的应用—华为拓扑
  5. Invokedynamic:Java的秘密武器
  6. Windows10 手机应用程序开发 - 3. 做一个简单的计算器界面
  7. Fov手术会不会在手术中新增手术边界
  8. Schema initialization FAILED! Metastore state would be inconsistent !!
  9. Python处理小学体育中的跑步计时数据并统计得分
  10. ERRORS: ?: (admin.E408) 'django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEW