Uncaught SyntaxError: Unexpected token o in JSON at position 1

在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就产生了此错误

 

上一篇:Google I/O 2021 Android精华内容


下一篇:Jetpack架构组件Room-基本使用