Unexpected token o in JSON at position 1 报错原因
一、总结
一句话总结:
解决方案:就是去掉JSON.parse()这一层转换
报错原因:因为你要转换的数据本来就是object,JSON.parse()这个方法是把一个字符串解析出json对象,你再转换就会报错;
1、遇错原因:vue的data中question_list_box:JSON.parse('{!! json_encode($question_list_box !!}'),如何解决?
可以php中json_encode()之后直接给页面的window对象,这样会直接转成json对象,这样可以不必使用JSON.parse()函数
2、JSON.parse()作用?
JSON.parse()用于从一个字符串中解析出json对象
二、Unexpected token o in JSON at position 1 报错原因
转自或参考:Unexpected token o in JSON at position 1 报错原因
https://blog.csdn.net/wxl1555/article/details/79184076
写在前面的话
这个问题在之前做项目时碰到过一次,当时按照网上的做法,去掉JSON.parse()这一层转换后就没有这个报错了,数据也能正常使用,就没多想,也没深究是什么原因。
可是这次又碰到了,所以这次必须要弄明白原因。
先看看它的作用
JSON.parse()用于从一个字符串中解析出json对象,如
var str = '{"name":"LeonWu","age":"18"}'
JSON.parse(str);
//结果为一个Object
// age: "18";
// name: "LeonWu";
JSON.stringify()用于从一个对象解析出字符串,如
var a = {a:1,b:2,c:"LeonWu"};
JSON.stringify(a);
//结果为 "{"a":1,"b":2,"c":"LeonWu"}"
背后的原因
报错的原因
因为你要转换的数据本来就是object,JSON.parse()这个方法是把一个字符串解析出json对象,你再转换就会报错;
为什么会有这样的错误
因为把Object作为参数传到JSON.parse()里时,首先会默利用toString()方法转为string,结果为"[object Object]"。
JSON.parse()将第一个字符’['理解为数组的开始,第二字符’o’不知道怎么处理;所以就抛出了上面的错误信息 Unexpected token o in JSON at position 1。
解决方案就是去掉JSON.parse()这一层转换,因为你需要转换的数据本来就是一个json对象了,不需要在转换了。