經常使用json_decode()
轉換json
字串,一直都很順利,然而今天碰到了乙個頭疼的問題,json
字串轉換過之後一直為null
。
上網搜尋了下,可以使用json_last_error()
函式來檢視json
轉換最後發生的錯誤,json_last_error_msg()
用來顯示最後發生的錯誤詳情。可以分別參考json_last_error和json_last_error_msg 。
一般錯誤都是為4
,意思是編碼錯誤
。因為json_decode()
只能夠轉換utf-8
編碼的json
字串。
然而,我的錯誤顯示是3
,控制字元錯誤,可能是編碼不對
。
嘗試過以下方法:
一: json 字串中反斜槓被轉義,使用 htmlspecialchars_decode() 函式處理;
二:在儲存 json 資料時使用 urlencode() 函式;(因為json資料不是在我這邊控制的,而且將得到的json儲存為文字再轉換是沒問題的,故沒驗證該方法)
三:將編碼轉換為utf-
8,$content
= mb_detect_encoding($json, array("ascii",'utf-8',"gb2312","gbk",'big5')); //檢視編碼
$json
= mb_convert_encoding($content tent , "utf-8", "gbk"); //將字串轉為utf-8
四:在檔案頭加
五:查詢檔案中是否存在`bom`,如果存在也會出現該問題;
六:檢查json字串中是否多逗號;
七:檢查json中的名稱和值是否用的是雙引號,在json裡只能用雙引號表示字串,不要用單引號;
八:檢查json中的值是否有數字型別的,並且首位為零;(這個貌似沒問題)
九:字元的表示方式方式有很多種,但下面的都不支援 ,如:`\x06` ,可以將這些字元換為空,如:
js
on=s
trre
plac
e("\x
06",""
, json);
因為php也支援這種十六進製制方式,所以可以用eval來達到轉義效果。
我的問題是因為使用了aes
進行加密、解密,所以可能這個過程中出現了問題,最後把不支援的字元去掉就ok了。這個還是在overstockflow
上找到的。
author:leedaning
使用Python轉換word文件到JSON
需求是有一堆這樣的word文件,要轉換成試題,供web介面使用。file docx.document 2018 廉潔自律準則 知識競賽試題及答案.docx list val none for para in file.paragraphs v para.text.split for line in ...
nodejs中Excel資料轉換為JSON格式資料
這裡我用到的模組是 node xlxs 當然還有其他評價比較高的js xlsx,但是使用有點複雜,所以這裡演示node xlxs的使用。好吧直接上來貼 var xlsx2json require node xlsx var list xlsx2json.parse test.xlsx console...
json decode解碼失敗
案例 今日批量匯入遊戲,從別人介面拉去的字串json decode總是失敗,但是把log裡面記錄的解碼失敗的字串copy出來單獨解析,卻可以成功.排除了是字元編碼的問題後,還是不行,百思不得其解.只好二進位制對比,把接收到buf和我列印到log對比,發現還真存在一些差異 分析 乙個乙個位元組對比,發...