解決JSON.parse轉(zhuǎn)化不規(guī)范json字符串的問題
JSON.parse轉(zhuǎn)化不規(guī)范json字符串問題
JSON.parse可以將一個json字符串轉(zhuǎn)化為一個json對象。但是該方法對json字符串的格式要求比較嚴(yán)格,如果json字符串不太規(guī)范,轉(zhuǎn)化就會報錯。常見錯誤有兩種:
1 json字符串中的key值沒有帶引號
key值不帶引號的json字符串無法使用該方法轉(zhuǎn)化,如下:
{
a:1
}轉(zhuǎn)化報錯如下:

2 json字符串中的key值帶的單引號
如果json字符串中的key值帶的是單引號,也無法轉(zhuǎn)化,報錯相同,如下:
{
'a':1
}
3 規(guī)范的json字符串格式
json字符串中所有的key值必須用雙引號包裹才能正常轉(zhuǎn)化為json對象。 如下:
{
"a":1,
"b":"string",
"c":[1,2,3]
}
4 不規(guī)范json字符串的轉(zhuǎn)化方法
前提是,保證json字符串?dāng)?shù)據(jù)是正確的,只不過是key沒有用雙引號包圍,像上面提到的兩點。然后可以使用eval函數(shù)進(jìn)行轉(zhuǎn)化,如下:
eval("({a:1})")
eval("({'a':1})")

字符串轉(zhuǎn)json(JSON.parse報錯)
后端返回字符串類型的數(shù)組對象格式,js不能使用JSON.parse直接轉(zhuǎn),否則會報錯
問題
字符串格式不是很完美,導(dǎo)致JSON.parse轉(zhuǎn)換失敗。JSON.parse()方法對字符串的格式要求極其嚴(yán)格。一點格式錯誤都不能有,否則就報異常。

解決方法(此方法可解析不規(guī)范格式)
let str = "[{sec: 1, result: '123'}]"
let arr = eval('(' + val + ')')
console.log(arr)//[{sec: 1, result: '123'}] 此時已轉(zhuǎn)化為json格式
| 類型 | $parseJSON(需配合jquery使用) | JSON.parse | eval |
|---|---|---|---|
| 方法說明 | jquery的方法。將符合標(biāo)準(zhǔn)格式的的JSON字符串轉(zhuǎn)為與之對應(yīng)的JavaScript對象 | 只能解析屬性名是雙引號包裹的字符串對象 | 可將一個JavaScript代碼字符串求值成特定的對象 |
| 主要區(qū)別 | 字符串必須用雙引號括起來 | 必須嚴(yán)格遵守json字符串格式;屬性名稱必須用雙引號包裹; | 字符串必須用雙引號括起來。 |
| 使用場景 | 能用JSON.parse的都可以用這個 | json字符串必須嚴(yán)格符合json格式??梢杂迷诤蠖藗鬟f給前端數(shù)據(jù)格式的使用使用。對數(shù)據(jù)的嚴(yán)謹(jǐn)性可以 | 格式不規(guī)范的時候,當(dāng)你不能確認(rèn)對方的數(shù)據(jù)格式是不是很嚴(yán)謹(jǐn)?shù)臅r候 |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端實現(xiàn)docx文件預(yù)覽的3種方式舉例及分析
這篇文章主要介紹了前端實現(xiàn)docx文件預(yù)覽的3種方式,三種方式分別是docx-preview、vue-office和mammoth,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-03-03
Jquery把獲取到的input值轉(zhuǎn)換成json
本篇文章主要介紹了Jquery把獲取到的input值轉(zhuǎn)換成json的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05
關(guān)于JS Lodop打印插件打印Bootstrap樣式錯亂問題的解決方案
關(guān)于Lodop打印是個很牛的打印插件,但是打印Bootstrap的樣式的時候就容易錯亂,下面通過本文給大家分享下這方面的問題2016-12-12
JavaScript數(shù)據(jù)結(jié)構(gòu)與算法
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法,文章圍繞主題展開數(shù)據(jù)結(jié)構(gòu)與算法的概念,以及幾種常見的數(shù)據(jù)結(jié)構(gòu)是什么,有什么優(yōu)點和缺,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07

