1. 程式人生 > >Mysql中的資料用 json_decode 解析返回null的一則處理方法

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解析,返回正確的結果。

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