为什么 JSON 接口的数据都要加双引号!!!不能用单引号
原因是:Javascript 在很多时候会把 JSON 对象里面没有双引号包围的值,当做数值处理。比如:
{"a":987654321}
这个 JSON 里头的变量 a,会被当做一个整数 987654321 看待,而:
{"a":"987654321"}
这个 JSON 里头的变量 a,会被当做一个字串,字串的内容是“987654321”看待。
而 Javascript 在内部,会把 987654321 这样的东西当做整数,自动转换成 C int 类型,而缺省情况下,int 类型都是 32 bits的,也就是说,稍微大一点的数就有可能导致溢出。
正确的JSON是这样的:属性名必须用双引号包裹
var
json =
'{"name":"imooc"}'
;
// 这个是正确的JSON格式
var
json =
"{\"name\":\"imooc\"}"
;
// 这个也是正确的JSON格式
var
json =
'{name:"imooc"}'
;
// 这个是错误的JSON格式,因为属性名没有用双引号包裹
var
json =
"{'name':'imooc'}"
;
//这个也是错误的JSON格式,属性名用双引号包裹,而它用了单引号
// 检验JSON格式是否正确,可以使用 JSON.parse(json); 如果是正确的JSON格式,会返回一个对象
// 否则会报错
// 如果是对象的话,属性名可以不用双引号包裹
var
obj = {name:
"imooc"
};
var
obj = {
"name"
:
"imooc"
};
var
obj = {
'name'
:
'imooc'
};
var
obj = {
"name"
:
'imooc'
};
var
obj = {
'name'
:
"imooc"
};
// 上述写法都是正确的。一般使用第一种形式最多,有些人可能为了保证跟JSON格式的字符串保持一致性,
// 也会使用第二种形式。。最后3种形式虽然是正确的,但不建议使用,容易挨打