当前位置: 首页 > news >正文

bug集合js1--Unexpected token o in JSON at position 1

欢迎访问我的个人博客:www.xiaolongwu.cn

写在前面的话

这个问题在之前做项目时碰到过一次,当时按照网上的做法,去掉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。

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

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

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

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

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

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

邮箱:wuxiaolong802@163.com

转载于:https://juejin.im/post/5c46c94cf265da612c5e2f8d

相关文章:

  • 为什么阿里巴巴不建议在for循环中使用+进行字符串拼接
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • Android进阶(三)Activity启动
  • TCP长连接的一些事儿
  • ObjC中KVC原理简析
  • MySQL 整数(int)数据类型
  • 2018年香港消防处接火警逾3万宗 救护服务超80万宗
  • GCD - Extreme (II) UVA - 11426 数学
  • 博客搭建祭
  • python3 --- locale命名空间让程序更加安全了
  • 学习第一周
  • C# 8将为断言和自动化测试带来Caller Expression Attribute
  • 原生js商品排序
  • 河南减税红利:顶格50%减征 小微企业受益面达98%
  • 迷你音乐播放器v1.0正式上线!
  • hexo+github搭建个人博客
  • css的样式优先级
  • CSS实用技巧
  • Laravel 菜鸟晋级之路
  • miaov-React 最佳入门
  • mongo索引构建
  • MySQL-事务管理(基础)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • React组件设计模式(一)
  • Spark RDD学习: aggregate函数
  • tweak 支持第三方库
  • 百度地图API标注+时间轴组件
  • 从伪并行的 Python 多线程说起
  • 高程读书笔记 第六章 面向对象程序设计
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 小程序测试方案初探
  • 终端用户监控:真实用户监控还是模拟监控?
  • 你对linux中grep命令知道多少?
  • 大数据全解:定义、价值及挑战
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​水经微图Web1.5.0版即将上线
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #{}和${}的区别?
  • #{}和${}的区别是什么 -- java面试
  • $.ajax中的eval及dataType
  • (06)金属布线——为半导体注入生命的连接
  • (1)SpringCloud 整合Python
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (论文阅读11/100)Fast R-CNN
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三)elasticsearch 源码之启动流程分析
  • (三分钟)速览传统边缘检测算子
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net mvc部分视图
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET Standard 的管理策略