㈠ 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 来解析的、