格式錯誤
由于json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。
$bad_json="{'bar':'baz'}";$bad_json='{bar:"baz"}';$bad_json='{"bar":"baz",}';
對這三個字符串執行json_decode()都將返回null,并且報錯。
第一個的錯誤是,json的分隔符(delimiter)只允許使用雙引號,不能使用單引號。第二個的錯誤是,json名值對的"名"(冒號左邊的部分),任何情況下都必須使用雙引號。第三個的錯誤是,最后一個值之后不能添加逗號(trailing comma)。
另外,json只能用來表示對象(object)和數組(array),如果對一個字符串或數值使用json_decode(),將會返回null。
格式正確,但卻報錯
第一種類型,字符編碼問題
由于json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。
第二種類型BOM問題
BOM報頭又叫UTF-8簽名,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前文件采用何種編碼,方便編輯器 識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一個空行,一般的php代碼如果用記事本等軟件編輯保存過之后,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。(還不清楚為什么會在返回數據時候也自動加上了BOM報頭)。
/***去除bom報頭*/publicstaticStringformatString(Strings){if(s!=null){s=s.replaceAll("\ufeff","");}returns;}
看完上述內容,你們掌握json格式錯誤是什么意思的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注本站行業資訊頻道,感謝各位的閱讀!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片)關于ATIHD4500是什么顯卡的知識大家了解嗎?以下就是小編整理的關于ATIHD4500是什么顯卡的介紹,希望可以給到大家一些參考,一起來了解下吧!是筆記本的獨立顯卡。ATI HD4500參數如下:1、核心頻率800MHz。2、擁有120個流處理器。3、支持DX10、1、SM4、1、PowerPlay 2、0、游戲物理加速、動態幾何加速、24X CFAA反鋸齒等技術。4、使用了新版視...
(資料圖)最近小編看到大家都在討論神盾局特工第五季結局相關的事情,對此呢小編也是非常的感應興趣,那么這件事究竟是怎么發生的呢?具體又是怎么回事呢?下面就是小編搜索到的關于神盾局特工第五季結局事件的相關信息,我們一起來看一下吧!美劇《神盾局特工》第五季大結局中,c死了,科爾森得知自己命不久矣之后,退出了神盾局,前往海邊沙灘度過余生??茽柹瓡灥购?,特工們爭論起來,黛西提議用解藥解救科爾森更好,而埃琳娜...
(資料圖)據瑞幸咖啡微信公眾號最新聲明,瑞幸現階段已暫停合作伙伴招募,開放時間以公司通告為準。同時,瑞幸咖啡旗下未開發任何子品牌,網絡上關于瑞幸及其子品牌加盟或代理的信息均為虛假信息;各大平臺有企業藍V認證的才是瑞幸咖啡官號,其他所有“無V”、諧音(如瑞辛、瑞莘、luckoncoffee、lckincoffee等)的賬號、店鋪均為假冒;瑞幸不會主動聯系用戶進行兼職招募、禮品...