微信扫一扫打赏支持

Unexpected token o in JSON at position 1 报错原因

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对象了,不需要在转换了。

 
posted @ 2019-10-16 11:09  范仁义  阅读(1274)  评论(0编辑  收藏  举报