在js调试时,会遇到Uncaught SyntaxError: Unexpected token o in JSON at position 1问题
obj = JSON.parse(str);
此错误一般是由JSON.parse()引起,代码如上,原因一般为str实际是一个对象,而不是字符串
解决办法,判断str为string时再JSON.parse()转化对象
obj = typeof(str) == "string" ? JSON.parse(str):str;
遇到的实际场景
1.在使用objTarget=JSON.parse(JSON.stringify(obj))做对象深拷贝时,obj中有一个属性arr为字符串数组,这些字符串为json格式字符串,能被转化为对象
经过深拷贝后,将objTarget中对应的属性arr变为了object数组,后续使用过程中,将此属性arr仍当做字符串数组,对数组元素使用JSON.parse就产生了此错误
Uncaught SyntaxError: Unexpected token o in JSON at position 1