json键值对都用引号吗?JSON 接口数据为什么要加双引号?

JSON和xml相比,它更小巧但描述能力却不差,由于它的小巧,所以网络传输数据将减少更多流量从而加快速度。那json键值对都用引号吗?下面来我们就来给大家讲解一下。

JSON就是一串字符串,只不过元素会使用特定的符号标注。

{} 双括号表示对象;

[] 中括号表示数组;

"" 双引号内是属性或值;

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象);

所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象,而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组。

当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象。

ps:现在还有很多人存在一些误区,为什么{name:'json'}在检验时通过不了,那是因为JSON官网最新规范规定,如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{"name":"json"}。不要反驳,官网就是这么定义的。

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种形式虽然是正确的,但不建议使用,容易挨打。

其实我们在使用json的使用,不管怎样,都是按照相关规则来,就像JSON 接口数据需要加双引号,那么大家也需要遵守规定哦!最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。

推荐阅读:

java的网络编程重要吗?详情分析

fastjson如何解析json?fastjson哪些特性?

java线程面试题怎么做?java线程面试题分享