JSON.parse解析单引号名值对报错
今天整理代码的时候发现JSON.pare解析时会报了一个错误,而且很难找原因,调试了几分钟没有成功,猜测可能是单双引号引起的错误。修改了单双引号后程序正常运行了,现在记录下这个bug。
关于JSON.parse()的用法可以参考这里 https://technet.microsoft.com/zh-cn/sysinternals/cc836466(en-us,VS.85).aspx
正题如下…………………………………………………………………………
首先要区分json和js对象,在javascript中json的名和值都需要引号包裹的,比如{"a":"b"}; 而js对象,只有值必须包裹名可以包裹也可以不包裹,比如{a:"b"}这样是正确的{"a":"b"}这样也是正确的。
1、名值对使用单引号包裹
因为平常都是用双引号包裹字符串的,所以我把要转化的字符串自然就写成这样子了。
var str="{'a':'1'}"
然后当我兴奋的使用JSON.parse接收对象的时候,呃,报错了
var json=JSON.parse(str);

看到这个结果,也看不出来原因。着实郁闷了一会。忽然想到是不是单双引号的问题,对调下发现成功了。
2、名值对使用双引号包裹
var str='{"a":"1"}';
var json=JSON.parse(str);
名值对使用双引号包裹发现成功了。

3、全部使用双引号包裹,当然这时候引号要转义
var str="{\"a\":\"1\"}";
var json=JSON.parse(str);
结果也是成功的

结论:使用JSON的parse将json形式的字符串转化为json的时候,名值对都必须使用双引号包裹
ps:如果有哪位大神知道为什么,请邮件小弟
JSON.parse解析单引号名值对报错的更多相关文章
- JSON Parse error: Unexpected identifier "object";stringToAnyType报错 uni-app
只限于uni 的局限问题,博主的报错是因为初始化某些关键数据在uni的 onLoad生命周期 和 onReady生命周期里面初始化,导致数据加载时出现个别报错的BUG JSON Parse er ...
- JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- jsp:useBean的属性class值一直报错的问题
先附上代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...
- JSON.parse 解析json字符串时,遇换行符报错
Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...
- JSON.parse 解析json字符串时,遇字符串换行符,解析失败
今天遇到json字符串转对象时报错了,发现有个字符串有换行符,仔细找了原因. 结果是因为JSON.parse转json字符串时遇到一些特殊字符需要先转义,如图所示 然后尝试了各路大神介绍的办法,均不适 ...
- 【javascript基础】 原生JSON.parse解析异常问题
[问题背景]用jQ,ajax返回json,返回的字符串如:{name:"suntiger035"},status:200,readyState:4,代码无任何问题,结果,succe ...
- 从返回值未报错得到的对于java finally理解
不多说了,直接看图 这个代码来自<深入理解java虚拟机(第二版)>,我在eclipse中编辑的,但是没有报错,一般来说,没有返回值,eclipse都会有个提示或者报错啥的,但是这个没有, ...
- Spark1.3使用外部数据源时条件过滤只要是字符串类型的值均报错
CREATE TEMPORARY TABLE spark_tbls USING org.apache.spark.sql.jdbc OPTIONS ( url 'jdbc:mysql://hadoop ...
随机推荐
- 【MySQL】MySQL无基础学习和入门大纲
一.安装 1.yum安装 2.分发包安装 3.配置文件 4.初始化数据库 二.启动 1.service mysqld start默认配置启动 2.mysqld_safe方式加载配置文件启动 3.mys ...
- delphi XE Berlin ReadProcessMemory WriteProcessMemory
delphi XE,Berlin [dcc32 Error] Unit9.pas(93): E2033 Types of actual and formal var parameters must ...
- arpg网页游戏之地图(三)
地图分块加载类MapEngine,主要包含以下属性: g 地图层graphics,地图将画在上面 buffPixelRange 地图加载范围矩形 viewPort 屏幕视窗 currZoneArr 已 ...
- C++多重继承子类和父类指针转换过程中的一个易错点
这两天有个C++新手问了我一个问题,他的工程当中有一段代码执行不正确,不知道是什么原因.我调了一下,代码如果精简下来,大概是下面这个样子: class IBaseA { public: ; int m ...
- make file
CPPUTEST_USE_EXTENSIONS = Y如果没有这一句定义,CppUTestExt/MockSupport.h和CppUTestExt/MockSupport_c.h文件中的定义就不能用 ...
- JAXB 2.0 API is being loaded from the bootstrap classloader
在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个 ...
- Find the equipment indices
Here is a simple program test task, it doesn't have very diffcult logic: A zero-indexed array A cons ...
- 安卓 io流 写入文件,再读取的基本使用
1.布局 布局里面只有一个EditView,通过输入内容之后,当触发 onDestroy 方法时,将输入的数据存储在当前应用的data/data/files文件夹下. <?xml version ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
- (引用 )自动化测试报告HTMLtestrunner
1>下载HTMLTestRunner.py文件,地址为: http://tungwaiyip.info/software/HTMLTestRunner.html Windows平台: 将下载 ...