場(chǎng)景:從后臺(tái)請(qǐng)求回來(lái)的數(shù)據(jù)中帶有json格式的字符串,需要處理成json對(duì)象才能進(jìn)行操作。
JSON.parse():
? ? ? ? 使用JSON.parse方法來(lái)解析json字符串婆跑。
? ?
報(bào)錯(cuò):? ??Uncaught SyntaxError: Unexpected token } in JSON at position 30
? ? ? ? ? ? ? ?Uncaught SyntaxError: Unexpected token ' in JSON at position 1
? ? ? ? ? ?這種報(bào)錯(cuò)是由于,json字符串的格式有問(wèn)題,json字符串中對(duì)象的最后一個(gè)元素后面不可以再加'撇寞,'逗號(hào)了。比如'{ "name": "cxh", "sex": "man",}'使用JSON.parse()就會(huì)報(bào)錯(cuò)堂氯,而且在json字符串中鍵值對(duì)需要用雙引號(hào)引起來(lái)蔑担。
解決方案:使用eval()
報(bào)錯(cuò):SyntaxError: Unexpected token e in JSON at position 1
????????由于請(qǐng)求回來(lái)的json中帶有轉(zhuǎn)義字符,所以才會(huì)報(bào)這個(gè)錯(cuò)誤咽白。
解決方案:帶有轉(zhuǎn)義字符的json字符串使用json
? ? ????json數(shù)據(jù)使用JSON.parse()有瀏覽器是不兼容JSON這個(gè)對(duì)象的啤握,或者有的里面有JSON.parse解析不了的東西,所以暫時(shí)還是使用: eval("("+data+")");
????????json源數(shù)據(jù)字符有轉(zhuǎn)義符應(yīng)該是必須的晶框,你要看解析出來(lái)后是否有多余的轉(zhuǎn)義符
json轉(zhuǎn)字符串JSON.stringify總體效果還可以:
前導(dǎo) 0 和小數(shù)點(diǎn)報(bào)錯(cuò):SyntaxError: JSON.parse: expected ',' or '}' after property value
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SyntaxError: JSON.parse: unterminated fractional number
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Uncaught SyntaxError: Unexpected number in JSON at position 25
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Uncaught SyntaxError: Unexpected token } in JSON at position 26
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????數(shù)字不能用 0 開(kāi)頭排抬,比如01懂从,并且你的小數(shù)點(diǎn)后面必須跟著至少一個(gè)數(shù)字。