json decode轉換json資料為null

2021-07-30 16:18:02 字數 1441 閱讀 5496

經常使用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對比,發現還真存在一些差異 分析 乙個乙個位元組對比,發...