问题1:在javascript中定义对象文字时,键可以包含引号,也可以不包含引号。没有任何区别,只是引号允许您指定某些键,如果您尝试裸键,这些键将导致解释器无法解析。例如,如果您想要一个只是感叹号的键,则需要使用引号:
a = { "!": 1234 } // Valid
a = { !: 1234 } // Syntax error
但是,在大多数情况下,您可以省略对象文字上键周围的引号。
问题2:JSON实际上是字符串表示形式。它只是一个字符串。因此,请考虑以下问题:
var testObject = { hello: "world" }
var jSonString = JSON.stringify(testObject);
由于testObject
是真实的对象,因此您可以在其上调用属性,并可以对对象执行其他任何操作:
testObject.hello => "world"
另一方面,jsonString
只是一个字符串:
jsonString.hello => undefined
请注意另一个区别:在JSON中,所有键都必须加引号。这与对象文字相反,在对象文字中,根据我在Q1中的解释,通常可以省略引号。
Q3。您可以使用解析JSON字符串JSON.parse
,这通常是最好的方式(如果浏览器或框架提供了此功能)。您也可以只使用eval
JSON,因为JSON是有效的JavaScript代码,但出于多种原因,建议使用前一种方法(eval与之相关的问题很多)。