㈠ js解析json字元串報錯解決方案(帶有轉義字元的json字元串)
場景:從後台請求回來的數據中帶有json格式的字元串,需要處理成json對象才能進行操作。
JSON.parse():
使用JSON.parse方法來解析json字元串。
報錯: Uncaught SyntaxError: Unexpected token } in JSON at position 30
Uncaught SyntaxError: Unexpected token ' in JSON at position 1
這種報錯是由於,json字元串的格式有問題,json字元串中對象的最後一個元素後面不可以再加','逗號了。比如'{ "name": "cxh", "sex": "man",}'使用JSON.parse()就會報錯,而且 在json字元串中鍵值對需要用雙引號引起來。
解決方案:使用eval()
報錯:SyntaxError: Unexpected token e in JSON at position 1
由於請求回來的json中帶有轉義字元,所以才會報這個錯誤。
解決方案:帶有轉義字元的json字元串使用json
json數據使用JSON.parse()有瀏覽器是不兼容JSON這個對象的,或者有的裡面有JSON.parse解析不了的東西,所以暫時還是使用: eval("("+data+")");
json源數據字元有轉義符應該是必須的,你要看解析出來後是否有多餘的轉義符
json轉字元串JSON.stringify總體效果還可以:
前導 0 和小數點報錯: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
數字不能用 0 開頭,比如01,並且你的小數點後面必須跟著至少一個數字。
㈡ 字元串的JSON轉換問題問題,怎麼解決
string類型如果要轉換成json的話,就需要寫成這樣的形式,如下:
String jsonStr ="{'id':'11','parentId':'root','refObj':{'existType':'exist','deptType':'emp','treeNodeType':'dept'}}";
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject refObj = new JSONObject(jsonObj.getString("refObj"));
String existType = refObj.getString("existType");
System.out.println(existType);
jar使用的是org.json.jar
㈢ 我拼成的JSON字元串,然後轉換JSON對象成功了,但是到了後台報錯.
var json='{'data':[{"flag":"10","uuid":"aaa"},{"flag":"20","uuid":"ccc"}]}';
試下這樣
㈣ JSON.parse解析特殊字元報錯的解決辦法
let str = JSON.stringify(arr)
str = encodeURIComponent(str)
<-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.->
arr = JSON.parse(decodeURIComponent(str)) // 再還原
《=====================================================》
JSON.stringify() : 用於將 javaScript 值轉換為 JSON 字元串;
JSON.parse() :用於將一個 JSON 字元串轉換為對象;
encodeURIComponent() :可把字元串作為 URI 組件進行編碼,該方法不會對 ASCII 字母和數晌纖字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) ,其他字元(比如 :;/?:@&=+$,# 這鏈租些用於分隔 URI 組件的標點符號),都是由一個或多個十六進制宴喚仿的轉義序列替換的(鏈接:https://www.runoob.com/js/javascript-json-stringify.html);
decodeURIComponent() :可對 encodeURIComponent() 函數編碼的 URI 進行解碼(鏈接:https://www.runoob.com/jsref/jsref-decodeuricomponent.html)。
㈤ JSON解析錯誤,出現雙引號,反斜杠處理辦法
首先json 對象一定是 大括弧{絕判頌 開始 ,大括弧}並鄭結束
int i = jsonString.indexOf("{");
jsonString = jsonString.substring(i);處理前部分
int j = jsonString.lastIndexOf("}");
jsonString = jsonString.substring(i-1,j+1);處理前後部分
jsonString = jsonString.replaceAll("沖滑\\\\",""); 處理反斜杠
//可以通過解析方法解析json字元串了,不過處理過程每一步最好列印校驗下,沒問題就解析成JSONObject
這里我用的 cn.hutool.json.JSONUtil 來解析的、