JS:JSON的属性名必须要加双引号吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS:JSON的属性名必须要加双引号吗?相关的知识,希望对你有一定的参考价值。

网上看到:
简单说,JSON格式就是一种表示一系列的“值”的方法,这些值包含在数组或对象之中,是它们的成员。对于这一系列的“值”,有如下几点格式规定:
数组或对象的每个成员的值,可以是简单值,也可以是复合值。
简单值分为四种:字符串、数值(必须以十进制表示)、布尔值和null(NaN, Infinity, -Infinity和undefined都会被转为null)。
复合值分为两种:符合JSON格式的对象和符合JSON格式的数组。
数组或对象最后一个成员的后面,不能加逗号。
数组或对象之中的字符串必须使用双引号,不能使用单引号。
对象的成员名称必须使用双引号。

但,比如:
<script>
var a=name:"haha",'age':32;
alert(a.age);
alert(a.name);

</script>

好像我这样写也都没有问题呀。怎么回事?

JSON转换相对严格,不加的话,你可以用 eval("("+你要解析的字符串+")"),这样是将解析字符窜当成js对象来处理,所以结构更加宽松些。 参考技术A 本人理解:
json中,对象的属性只能使用字符串,所以在很多浏览器的解析中默认不论你输入什么都是按照字符串处理了,然而按照标准来说,所有字符串都要用""包围

Json及Json字符串

JSON(JavaScript Object Notation)是一种独立于开发语言的用于存储和交换文本数据的格式,JSON 语法是JavaScript 语法的子集。

Json 可以保存数组格式和对象格式两种数据。其中对象格式以“键值对“的形式存储数据,key的取值为 String 类型,必须加双引号

Json对象:符合json格式的对象。因为js中属性名也是以字符串的形式存储的,所以可以直接通过.访问,无需解析。

var json={"name":"lilei",age:10};
typeof(json);    //"object"

Json字符串:本质是字符串,只不过字符串里面的内容符合json的格式,使用时还需要解析。最外边是单引号。因为js是弱类型语言,后台是强类型语言,以字符串形式从前台传到后台更好处理。

var jsonString=‘{"name":"lilei",age:10}‘;
typeof(jsonString);            //”string”

前后端数据传输时需要确认清楚具体是哪一种形式,否则会出错。

原生JSON对象提供了两个相互转换的方法:

JSON.parse(string[,replacer])用来解析JSON格式的字符串,重构成JavaScript对象;其中replacer是一个转换结果的函数,将为对象的每个成员调用此函数。

JSON.stringify(obj[, replacer])将javascript对象转换为等价的JSON格式字符串;replacer可以是一个函数或者一个数组,用于对序列化的键值对进行特别处理。

 

以上是关于JS:JSON的属性名必须要加双引号吗?的主要内容,如果未能解决你的问题,请参考以下文章

json的对象属性必须加双引号吗

Java:想要解析JSON,但是遇到好多双引号,该如何处理

JSON异步加载时间线

JSON的键究竟需要用双引号括起来吗

JSON与JS对象

json属性名为啥要双引号