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

写在前面的话
这个问题在之前做项目时碰到过一次,当时按照网上的做法,去掉JSON.parse()这一层转换后就没有这个报错了,数据也能正常使用,就没多想,也没深究是什么原因。

可是这次又碰到了,所以这次必须要弄明白原因。

先看看它的作用
JSON.parse()用于从一个字符串中解析出json对象,如

var str = ‘{"name":"LeonWu","age":"18"}‘

JSON.parse(str);

//结果为一个Object
// age: "18";
// name: "LeonWu";
1
2
3
4
5
6
7
JSON.stringify()用于从一个对象解析出字符串,如

var a = {a:1,b:2,c:"LeonWu"};

JSON.stringify(a);

//结果为 "{"a":1,"b":2,"c":"LeonWu"}"

1
2
3
4
5
6
背后的原因
报错的原因
因为你要转换的数据本来就是object,JSON.parse()这个方法是把一个字符串解析出json对象,你再转换就会报错;

为什么会有这样的错误
因为把Object作为参数传到JSON.parse()里时,首先会默利用toString()方法转为string,结果为"[object Object]"。

JSON.parse()将第一个字符’[‘理解为数组的开始,第二字符’o’不知道怎么处理;所以就抛出了上面的错误信息 Unexpected token o in JSON at position 1。

--------------------- 分割线,2019年1月22日11:21:03更新-----------------------

好多人在下面评论,问最终的解决方案,可能是我没有写清楚的缘故吧。

解决方案我在文章开头就说了,就是去掉JSON.parse()这一层转换,因为你需要转换的数据本来就是一个json对象了,不需要在转换了。

github资源仓库:bug集合js1–Unexpected token o in JSON at position 1

我的CSDN博客地址:https://blog.csdn.net/wxl1555

如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。

原文地址:https://www.cnblogs.com/Ph-one/p/11741207.html

时间: 2024-07-30 20:18:26

Unexpected token o in JSON at position 1 报错原因的相关文章

关于Uncaught SyntaxError: Unexpected token o in JSON at position 1,chrome持续报错的相关解析

今天跟大家分享我前两天遇见的一个BUG,说出来很难受,因为这个BUG花了我一个多小时去找原因,后来莫名其妙的故障消失了,强迫症犯了的我,居然花了2个多小时去故意再制造这个BUG,只想弄明白WHY???结果大家应该都猜到了,哈哈,没找到!!!没错,居然没找到!!!不过类似于Uncaught SyntaxError: Unexpected token ' in JSON at position 2的错误... 关于JOSN的方法,大家通过百度应该都深刻理解它的用法:parse用于从一个字符串中解析出

JS请求报错:Unexpected token T in JSON at position 0

<?php /* 最近做一个ajax validate表单验证提交的代码,在ajax提交的时候 JS请求报错:Unexpected token T in JSON at position 0 描述: 这是一个请求,参数的地方报这要的错,请问是为什么? 百思不得其解啊 解决方案1: 去看下json的格式要求,JSON.parse()方法对json串要求很严格 解决方案2: http://www.bejson.com/ 用这个网址测试试试json格式是不是有误,换行,单引号什么的会导致报错,格式要求

VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1

再用JQuery解析json的时候出现了这样一个问题 VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1 通过查阅资料发现,是由于解析json文件的时候解析到object而引起的错误.通过console.log的输出,发现输出的结果是一个类似于数组的输出内容. 通过寻找发现由于JQuery版本的升级,JQuery的ajax方法发生了变化,ajax的sucess的回调值直接将json解析,造成了这种错误. 所

js解析json时报:Unexpected token s in JSON at position 0

原因肯定是返回的json格式有问题 最有可能是后台在程序执行过程中,输出了某些调试信息等等,这些输出的字符串和json拼接成了新的字符串来解析,这时就会报错: 比如我在入口文件里var_dump了__DIR__,这时在请求json时返回正常数据,但是在JOSN.pares()时就报错,删了var_dump后就正常执行. 原文地址:https://www.cnblogs.com/frankltf/p/8684971.html

C# String.Format格式化json字符串中包含"{" "}"报错问题

json.Append(String.Format("{\"total\":{0},\"row\":{1}}", lineCount, strJSON));直接会报错 字符串中包含{或者},则需要用{{ 来代替字符 {,用}} 代替 }如:json.Append(String.Format("{{\"total\":{0},\"row\":{1}}}", lineCount, strJS

后台返回json字符串 页面js报错 Uncaught SyntaxError: Unexpected identifier

后台json字符串是 [{"name": "报销申请", "id": "start"}, {"name": "部门经理审批", "id": "departAudit"}, {"name": "总经理审批", "id": "bossAudit"}, {"name

【微信】微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input

如果新创建报错:编译报错VM1781:2 pages/module/module.json 文件解析错误  SyntaxError: Unexpected end of JSON input 解决方法: 在JSON文件中添加 即可解决 { } 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9076271.html

struts2使用json返回数据,报错:Parent package is not defined: json-default - [unknown location]

使用struts2的struts-json插件时,一直报错:找不到json-default的位置,下面是我的查错步骤: 1.将struts-json版本更改为低版本,结果还是报这个错 2.重新导入maven依赖,还是不行 3.查看struts-json包内的struts-plugin.xml是否有json-default的package以及json的结果类型,发现有. 4.静下心想了一下整个package的调用过程,都找不到原因 5.最后怀疑是war包的问题,war包内没有这个jar包,打开wa

【报错原因】Uncaught SyntaxError: Unexpected token &lt;

实际上是当前页面引入的js文件路径找不到!!! 页面查找不到js文件自动跳转到404.html页面 域名+/404.html 原文地址:https://www.cnblogs.com/ivan5277/p/10699067.html