JSON和JS对象
来源:互联网 发布:疯狂的美工助手要钱吗 编辑:程序博客网 时间:2024/03/29 21:59
一 序言
之前看代码,看到定义JS对象时,有些地方属性名不加引号,有些却加了,带着疑问搜了一下,结果大概是这样的:
JS对象的引号是可加可不加的,有个列外就是如果使用不规则属性名时必须加引号,如3rd。大家还提到了另一个概念—JSON,JSON的属性名是必须加双引号的。如果不加双引号,是不能正确解析成“JSON对象”的。提到JSON,从字面上看与JS对象非常相似,它们到底有什么区别呢。
二 JSON与JSON对象的区别
JSON: JavaScript Object Notation,一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。
下面定义一个JSON和JS对象
// 这是JSON字符串var foo = '{ "prop": "val" }'; // 这是对象字面量var bar = { "prop": "val" };
说它们类似,是从字面上的意义理解的,这里引用一位同学给出的答案:
1. JS是一种脚本语言, 对象是对象字面量(符合对象定义语法的文本)被脚本引擎解释之后,在内存中产生的,定义对象的文本是否符合语法,取决于脚本引擎。
2. JSON不是一种语言,它仅仅是一种数据的表达方式,从某种程度上来讲,JSON跟XML没有什么区别。 对于JS的字面量来说,上面文本仅仅是代码的一部分,相当于指令,而JSON文本,它本身就表示了数据。
总结下,两者完全就是不同的概念,是不能相提并论的。
从语法上看,两者也是有区别,JSON有更严格的语法规则,具体可参考。JS对象属性名是可以加双引号、单引号或不加引号,如
var bar = {prop: "var"};这在js中是合法的,但是这却不是合法的JSON,因为JSON里的键/值都必须用双引号引住。
三 JSON对象?
大家经常会说把JSON字符串转化成JSON对象,把JSON转化成字符串,这里所谓的JSON对象是不对的,这种说法是不对的,JSON是可以通过方法转换成对象,但这也是JS对象,不是什么JSON对象。
有人可能不同意了,是的,的确有真正意义上的JSON对象,而不是上面提到的那种。JSON对象已经内置为全局对象了(IE8及以上都支持),目前有2个静态方法,JSON.parse:用来将JSON字符串解析成对象;JSON.stringify:用来将对象序列化成JSON字符串。(注意:老版本的浏览器并不支持这个对象,我们可以通过json2.js来实现同样的功能。)
提到将JSON字符串解析成对象,就不得不提一下,eval(),这个也可以用来解析JSON,但是大家都不常用它来解析,主要是因为用eval()解析会存在安全隐患,因为它能解析任何的JS表达式,而JSON.parse只能解析JSON,有人说JSON.parse()方法其实就是通过eval()来实现的,只不过有对字符串进行控制,只对严格符合JSON语法的字符串进行解析,还包括一些其他的安全控制。
Reference:
[1] 深入理解JavaScript系列(9):根本没有“JSON对象”这回事!
[2] json对象和js对象的区别
[3] JSON.parse vs. eval()
- JSON和JS对象
- JS对象和JSON
- [原]JSON和JS对象
- js对象和json文件
- JSON和js对象转换
- JavaScript:JSON 和 JS 对象
- json和js对象转换
- js--json字符串 和 json对象总结
- js 中的 json对象和 json 字符串
- json对象和js对象的区别
- js对象、Json对象和Json字符串的区别
- js 中的json对象和map
- js JSON 对象和字符创互转
- js对象和 json的区别
- JS打印JSON对象和List
- js中json对象和string互转
- 【JS】【json对象】【fastjson和jsonlib】
- MVC中处理Json和JS中处理Json对象
- 代码生成器 CodeSmith 的使用(一)
- 达内2013C++教程STL笔记
- out参数和ref参数区别
- 从调试器控制异常和事件:SXE、 SXD、 SXN、SXI
- 单词缩写
- JSON和JS对象
- LINK - Windows Universal App in-app purchase
- 抓取网页
- OMG 接口定义语言
- Statement 和 PreparedStatement CallableStatement及hibernate中的session
- Java追加文件内容的三种方法
- nike air max pas cher also had to apologize this contact with the passengers. But he admitted that t
- escarpins louboutin five available Jiabao left handed down to future generations
- eclipse config 5 括号匹配插件