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)括起來(lái)的。但是標(biāo)準(zhǔn)Json的格式應(yīng)該是如下:
{
?? ?"key1": "value1",
?? ?"key2": "value2",
?? ?...
}鍵值都需要用雙引號(hào)括起來(lái)(不能用單引號(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 是一種語(yǔ)法,用來(lái)序列化對(duì)象、數(shù)組、數(shù)值、字符串、布爾值和 null。
JSON 對(duì)象和數(shù)組的屬性名必須是雙引號(hào)括起來(lái)的字符串,并且最后一個(gè)屬性后不能有逗號(hào)。
JSON 字符串也要用雙引號(hào)括起來(lái)。
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()的性能小測(cè)試
- JSON中key動(dòng)態(tài)設(shè)置及JSON.parse和JSON.stringify()的區(qū)別
- 淺談JSON.parse()和JSON.stringify()
- JSON.parse 數(shù)據(jù)不完整的解決方法
相關(guān)文章
javascript圖片切換綜合實(shí)例(循環(huán)切換、順序切換)
這篇文章主要介紹了javascript圖片切換綜合實(shí)例,包括javascript圖片循環(huán)切換、javascript圖片順序切換,兩張圖片的切換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01
javascript HTMLEncode HTMLDecode的完整實(shí)例(兼容ie和火狐)
用的瀏覽器內(nèi)部轉(zhuǎn)換器實(shí)現(xiàn)轉(zhuǎn)換,方法是動(dòng)態(tài)創(chuàng)建一個(gè)容器標(biāo)簽元素2009-06-06
js設(shè)置function參數(shù)默認(rèn)值(適合沒有傳參情況)
div+css模擬js信息框的類庫(kù)時(shí)遇到一個(gè)問題當(dāng)沒有傳遞參數(shù)過去時(shí)自動(dòng)使用提示信息作為窗口標(biāo)題,具體的實(shí)現(xiàn)如下2014-02-02
35個(gè)JS中實(shí)用工具函數(shù)的代碼分享
身為后臺(tái)開發(fā)的各位鐵鐵,實(shí)際開發(fā)不管是公司要求或是自身發(fā)展,學(xué)前端已經(jīng)是我們內(nèi)卷路上必定碰到的,那今天小編就給大家總結(jié)下那些我們工作中可能遇到的一些實(shí)用Js函數(shù)2022-06-06
jstl中判斷l(xiāng)ist中是否包含某個(gè)值的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇jstl中判斷l(xiāng)ist中是否包含某個(gè)值的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-10-10
JS實(shí)現(xiàn)隨頁(yè)面滾動(dòng)顯示/隱藏窗口固定位置元素
窗口固定位置顯示元素,當(dāng)頁(yè)面高度大于某高度,并且頁(yè)面向下滾動(dòng)時(shí),顯示該元素;當(dāng)頁(yè)面位置小于某高度,或者頁(yè)面向上滾動(dòng)時(shí),隱藏該元素,下面通過本文給大家介紹JS實(shí)現(xiàn)隨頁(yè)面滾動(dòng)顯示/隱藏窗口固定位置元素,需要的朋友參考下吧2016-02-02

