1.起因
一般json格式的key键都是字符串,但是今天碰到一个奇葩的json格式,键值是纯数字,,
这种用JSON.parse的原生方法解析的话会报错,因为这个方法是严格按照JSON格式进行解析的,看后端的写法是这样
,估计也没注意吧....真是带来了很多麻烦
2.解决
JSON解析除了JSON.parse还有另外一种方法,直接使用eval方法解析
eval('(' + response.data + ')')
这样解析的JSON就不会报错,虽然eval不推荐使用,因为效率没JSON高,而且会加载里面的JavaScript语句,但是碰上这种情况不得不用,还是要根据具体的情景来选择相应的技术解决.
然后代码的写法就是这个样子的
let repData = response.data if (typeof repData === 'string') { repData = eval('(' + response.data + ')') }
如果axios请求后端返回的是对象的话,说明axios已经把数据解析成对象了,我们就不用做任何的处理了,如果不是对象,是字符串,说明传回来了那种奇葩格式,我们就需要判断一下,用eval解析.