JSON数据操作



JSON (JavaScript ObjectNotation)JS对象记号,JavaScript中一个标准子集,所以用JavaScript平台处理JSON是最合适的。

JSON有两种基本结构:

  1A collection of name/value pairs (键值对的集合),如 var t={"name":"h5"}

  2An ordered list of values. In most languages, this is realized as an array,vector, list, or sequence. 一个有序的列表(数组、向量、列表、队列),如vart=["h1","h2","h3","23"];

今天主要讲第一种基本结构JSON的操作:

一、通过访问key获取对应的value

这里有两种方法:一是 对象.key,比如对于json数据var t={"name":"h5"}t.name就可以获取h5;二是对象['key']t[“name”]也可以得到h5这个值。但是如果遇到如下

两种情况,只能用第二种方法:

  1key是数字开头的时候

  2key是变量名的时候

  3key包含空格的时候

二、遍历jsonkey

 如何遍历var p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}中的键?

也有两种方法:

1、用for循环

     for(var key in p){

         alert(key);

      }

2Object.keys方法获取

var keys=Object.keys(p);

for(var k=0;k<keys.length;k++){

       alert(keys[k]);

    }

三、遍历json的值

如何遍历var p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}中的值?我们知道,值可以根据键获取,所以如果有两种方法实现遍历键,就有两种方法获取值,只要知道值=对象[‘’]即可,除此之外,还可以通过Object.values()获取。

 1for循环遍历p的所有value

     for(var key in p){

        alert(p[key]);

    }

2、通过Object.keys方法获取键,再获取值

       var keys=Object.keys(p);

                       for(var k=0;k<keys.length;k++){

                            alert(p[keys[k]]);

                       }

 3Object.values()方法

除了上述两种方案外,还有Object.values()这个方法。但是,该方法并不是所有浏览器都支持。

var values=Object.values(s);

                      for(var k=0;k<values.length;k++){

                             alert(values[k]);

                      }

四、添加属性

默认情况下,只要通过json对象[‘key’]=value,既可以往json对象添加一个键值对。需要注意的是新添加的key一定是原json对象中不存在的key,否则就变为修改了。

比如var p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}json数据,运行如下代码 p[‘sex’]=’’; 结果为

p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa",”sex”:””}

 

  五、删除属性

 调用delete 方法即可。

比如p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa",”sex”:””}

 delete p[‘sex’]

结果为:

p={"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

  六、修改属性

重新给对象的属性赋值即可,比如把p对象的email属性改为http://www.163.com,只要编写如下代码:p[‘email’]=’ http://www.163.com

七、扩展

Object.preventExtensions()方法用于锁住对象属性,使其不能够拓展,也就是不能增加新的属性,但是属性的值仍然可以更改,也可以把属性删除,Object.isExtensible()用于判断对象是否可以被拓展。

Object.seal( ) 方法可以让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可以修改已有属性的值的对象。

Object.freeze();[                                                                  

终极神器,完全冻结对象,seal的基础上,属性值也不可以修改(每个属性的wirtable也被设为false)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值