首頁 >web前端 >js教程 >json格式錯誤是什麼意思

json格式錯誤是什麼意思

(*-*)浩
(*-*)浩原創
2019-06-01 13:53:2713483瀏覽

格式錯誤

json格式錯誤是什麼意思

由於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报头
 */
public static String formatString(String s) {
if (s != null) {
  s = s.replaceAll("\ufeff", "");
}
 return s;
}

以上是json格式錯誤是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn