JSON与JS对象的区别

6 篇文章 0 订阅

和一些同学一样:总是感觉json对象(其实json不是对象)和js对象的字面量表示法相同,最近学习json,真心搞不懂,js对象和json有什么区别?就是感觉json的key要用” “括起来,但是js对象的字面量表示法不需要。
  
比如:

//js对象的字面量表示法: 
var people1={ 
    name:'hehe', 
    age:18 
}; 
//json的格式是: 
var people1={ 
    "name":'hehe', 
    "age":18 
}; 

二者相同的地方是,看起来都是数据,而且恰巧又都是文本;不同的地方在于,JS字面量的文本是被脚本引擎直接解析的,而JSON的文本,如果要转化为JS对象的话,是交给eval函数来处理的,那么,如何理解JSON的文本,就取决于这个函数,而不是脚本引擎,因为这2者的处理根本就不在一个层面上。
  一直以为JSON是对象,然而在阅读js高程中出现了一些不理解的地方,网上查阅才发现JSON与JS有很大的不同。
  var obj={width:100,height:200},这样的并不叫JSON,并且JSON只是一种数据格式,并不是具体的实例对象。但很多人把这样的JS对象当成JSON。
  JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的。
  但JSON和JavaScript确实存在渊源,可以说这种数据格式是从JavaScript对象中演变出来的,它是JavaScript的一个子集。JSON本身的意思就是JavaScript对象表示法(JavaScript Object Notation),它用严格的JavaScript对象表示法来表示结构化的数据。
  它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号;
  JSON只是一种数据格式(或者叫数据形式),数据格式其实就是一种规范,格式、形式、规范是不能用来存诸数据的。我们不能把以下的对象叫JSON,比如:

<script>
var obj2={};//这只是JS对象
var obj3={width:100,height:200};/*这跟JSON就更不沾边了,只是JS的对象 */
var obj4={'width':100,'height':200};/*这跟JSON就更不沾边了,只是JS的对象 */
var obj5={"width":100,"height":200,"name":"rose"}; /*我们可以把这个称做:JSON格式的JavaScript对象 */
var str1='{"width":100,"height":200,"name":"rose"}';/*我们可以把这个称做:JSON格式的字符串 */

var a=[
                {"width":100,"height":200,"name":"rose"},
                {"width":100,"height":200,"name":"rose"},
                {"width":100,"height":200,"name":"rose"},
        ];
        /*这个叫JSON格式的数组,是JSON的稍复杂一点的形式 */
var str2='['+
                '{"width":100,"height":200,"name":"rose"},'+
                '{"width":100,"height":200,"name":"rose"},'+
                '{"width":100,"height":200,"name":"rose"},'+
        ']' ;
        /*  这个叫稍复杂一点的JSON格式的字符串  */ 
</script>

这里写图片描述
————————————————
版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yeoman92/article/details/54924930

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值