JSON.parse處理非標(biāo)準(zhǔn)Json數(shù)據(jù)出錯(cuò)的解決
JSON.parse處理非標(biāo)準(zhǔn)Json數(shù)據(jù)出錯(cuò)
標(biāo)準(zhǔn)json格式
通常我們?cè)诰幋a中使用的object是類似于下面這種:
let object = { ?? ?key1: 'value1', ?? ?key2: 'value2', ?? ?... }
這樣的對(duì)象在代碼中鍵是不需要用引號(hào)括起來的。但是標(biāo)準(zhǔn)Json的格式應(yīng)該是如下:
{ ?? ?"key1": "value1", ?? ?"key2": "value2", ?? ?... }
鍵值都需要用雙引號(hào)括起來(不能用單引號(hào))。
有時(shí)候后臺(tái)傳給前臺(tái)的數(shù)據(jù)被轉(zhuǎn)成了字符串形式,并且是各種不標(biāo)準(zhǔn)的json格式,這時(shí)候js中使用JSON.parse會(huì)報(bào)錯(cuò)。
解決方法
可以使用強(qiáng)大的eval()函數(shù) 處理非標(biāo)準(zhǔn)json,使用方式如下:
json_string = "{key1: 'value1', key2: 'value2',}"; let json_data = eval('(' + json_string + ')');
eval主要是js的解析器封裝函數(shù),功能非常強(qiáng)大
JSON.parse報(bào)錯(cuò)分析
1.報(bào)錯(cuò)提示:
Uncaught SyntaxError: Unexpected token N in JSON at position 0
JSON.parse(NaN) JSON.parse('NaN')
2.報(bào)錯(cuò)提示:
Uncaught SyntaxError: Unexpected token u in JSON at position 0
JSON.parse(undefind) JSON.parse('undefind')
3.報(bào)錯(cuò)提示:
Uncaught SyntaxError: Unexpected token o in JSON at position 1
JSON.parse({a:2})
4.報(bào)錯(cuò)提示:
Uncaught SyntaxError: Unexpected token a in JSON at position 1
JSON.parse('{a:2}')
5.報(bào)錯(cuò)提示:
Unexpected token ' in JSON at position 1
JSON.parse("{'a':11}")
6.正確格式:
JSON.parse('{"a":11}'
**關(guān)于 JSON.parse
JSON.parse 用于解析 JSON 字符串,并返回相應(yīng)的值,其參數(shù)必須符合 JSON 字符串的格式,否則就會(huì)報(bào)錯(cuò)。
JSON 是一種語法,用來序列化對(duì)象、數(shù)組、數(shù)值、字符串、布爾值和 null。
JSON 對(duì)象和數(shù)組的屬性名必須是雙引號(hào)括起來的字符串,并且最后一個(gè)屬性后不能有逗號(hào)。
JSON 字符串也要用雙引號(hào)括起來。
JSON 數(shù)值禁止出現(xiàn)前導(dǎo)零(JSON.stringify方法自動(dòng)忽略前導(dǎo)零,而在 JSON.parse方法中將會(huì)報(bào)錯(cuò));如果有小數(shù)點(diǎn),則后面至少跟著一位數(shù)字。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JSON.parse()和JSON.stringify()使用介紹
- 關(guān)于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
- JSON.parseObject和JSON.toJSONString實(shí)例詳解
- javascript中JSON.parse()與eval()解析json的區(qū)別
- JS使用JSON.parse(),JSON.stringify()實(shí)現(xiàn)對(duì)對(duì)象的深拷貝功能分析
- 詳解關(guān)于JSON.parse()和JSON.stringify()的性能小測試
- JSON中key動(dòng)態(tài)設(shè)置及JSON.parse和JSON.stringify()的區(qū)別
- 淺談JSON.parse()和JSON.stringify()
- JSON.parse 數(shù)據(jù)不完整的解決方法
相關(guān)文章
Javascript實(shí)現(xiàn)的分頁函數(shù)
Javascript實(shí)現(xiàn)的分頁函數(shù)...2007-02-02echarts柱狀圖坐標(biāo)軸內(nèi)容顯示不全的兩種解決辦法
本文主要介紹了echarts柱狀圖坐標(biāo)軸內(nèi)容顯示不全的兩種解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05創(chuàng)建一個(gè)復(fù)制UBB軟件信息的鏈接或按鈕的js代碼
2008-01-01js實(shí)現(xiàn)從中間開始往上下展開網(wǎng)頁窗口的方法
這篇文章主要介紹了js實(shí)現(xiàn)從中間開始往上下展開網(wǎng)頁窗口的方法,是非常實(shí)用的js窗口效果,需要的朋友可以參考下2015-03-03javascript 循環(huán)調(diào)用示例介紹
循環(huán)調(diào)用,如果已經(jīng)獲取到了結(jié)果,則退出循環(huán),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以嘗試操作下2013-11-11Javascript基于AJAX回調(diào)函數(shù)傳遞參數(shù)實(shí)例分析
這篇文章主要介紹了Javascript基于AJAX回調(diào)函數(shù)傳遞參數(shù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了JavaScript使用ajax傳遞參數(shù)的相關(guān)技巧以及回調(diào)函數(shù)的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-12-12