Mysql中的数据用 json_decode 解析返回null的一则处理方法

刚刚遇到一个php json_decode解析的问题,记录一下解决方法:

一个调查问卷系统,从数据库中取出多条记录,其中以下一条数据记录,在用php json_decode解析时,结果返回NUll

{"question_1359":"韩亮","question_1360":"综合管理部","question_1361":"资质","question_1362":"12月14日","question_1363":"3500","question_1379":"3588","question_1380":"3595","question_1370":"3535,3537,3539,3542","question_1371":"3544","question_1372":"3549","question_1373":"3553","question_1374":"3562","question_1381":"3598,other:对公司整体情况(发展历程、技术、产品性能)的了解","question_1375":"3564,3571","question_1382":"1、没有机会认识其他部门的同事;
2、有相关事宜不清楚咨询具体哪位同事;
3、新员工记不住公司制度,查询不方便。","question_1376":"3602,3604,3606,3608,3610,3612,3616,3620","question_1378":"希望因需制定培训内容;
吸取外界知识很重要。"}


编码已经是UTF-8,其他数据解析正常,所以,排除是中文编码问题。

经过与下面的可以正常解析的数据进行对比

{"question_1359":"徐燕","question_1360":"研发","question_1361":"产品文档","question_1362":"20111214","question_1363":"3503","question_1379":"3588,3590,3592,other:我个人认为,花时间去做培训,更多的是能帮助员工发散自己的思维更好的工作。","question_1380":"3594","question_1370":"3536,3537,3538,3542","question_1371":"3546","question_1372":"3549","question_1373":"other:适时安排,毕竟每个人的工作时间并不是统一性的。","question_1374":"3561","question_1381":"3598,3599,3600","question_1375":"3566,3567,3568,3571","question_1382":"专业性不强,对产品的了解不够,对公司体系的不熟悉","question_1376":"3602,3603,3608,3609,3617,3618,3619,3620","question_1378":"针对职业的专门性的培训,我作为文档工程师,更多的希望关注较为针对性的业内培训"}

 

发现不能正常解析的数据,包含了

\r\n
","question_1382":"1、没有机会认识其他部门的同事;
2、有相关事宜不清楚咨询具体哪位同事;
3、新员工记不住公司制度,查询不方便。"

换行,怀疑是数据库中的换行造成的。

\r 表示:回车符(ACSII:13 或0x0d),就是我们常说的硬回车。
\n 表示:换行(ACSII:10 或0x0a),就是我们常说的软回车。

过滤

$str = str_replace(array("\r","\n"),"",$str);


然后用json_decode解析,返回正确的结果。

补充:www.json.org 提供的需要过滤的特殊字符

\"
\\
\/
\b
\f
\n
\r
\t
\u



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值