您的位置:首页 > 数据库 > MySQL

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

2011-12-14 11:38 836 查看
刚刚遇到一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: