js操作json的基本⽅法
js操作json时,常⽤的是使⽤[]或者.来获取json属性的值。使⽤上还是有些区别的。
JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。易于⼈阅读和编写。同时也易于机器解析和⽣成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的⼀个⼦集。 JSON采⽤完全独⽴于语⾔的⽂本格式,但是也使⽤了类似于C语⾔家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语⾔。其属性值的获取有三种⽅法
1. 对象名.属性名, 类似于⾼级语⾔的写法
var obj = '{"name":"wisdo", "age":"20"}';
var data = eval('('+ obj +')');
alert(obj.name);
js获取json的key和value2. 以数组索引的⽅式来访问
var obj = '{"name":"wisdo", "age":"20"}';
var data = eval('('+ obj +')');
alert(obj[0]); // 输出的是 name
3. 以字典索引的⽅式来访问
var obj = '{"name":"wisdo", "age":"20"}';
var data = eval('('+ obj +')');
alert(obj['name']); // 输出的是 name 值
在通常的情况下,⼀般是使⽤第⼀种⽅法,即通过对象名.属性名的⽅式来访问,这样对于使⽤⾼级语⾔的编程很直观,也很容易理解,但这也有局限性,属性的名称要规范,key 要以字母或下划线开头的包括字母、下划线和数字的字符串,不能以数字开头.
总结
data.key和data[’key’]各⾃有⾃⼰的应⽤场景,⼀般情况使⽤data.key即可,也⽐较直观(它符合其它⾼级语⾔中访问对象中属性的⽅式);当key为⼀个变量时,并且使⽤在循环中,⽤data['key']这种⽅式。
for(var i=0; i < 10; i++) {
s += data['key' + i]; //循环调⽤,可简化代码}
以数组索引的⽅式来访问,虽然不推荐,但也是有其应⽤价值的;如当建⽴⼀个与数据库中id⼀⼀对应的map对象的时候,可直接⽤id 的数值做key,虽然你可以给它加上⼀个字母前缀来让它符合合法的变量名的标准并让它的数据能通过data.key的⽅式访问.
使⽤[]或者.来获取json属性的值,还是有不同的地⽅的。可以参看下⾯的
访问对象值
1、你可以使⽤点号.来访问对象的值:
var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj.name;
2、你也可以使⽤中括号[ ]来访问对象的值:
var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];
3、从功能上说,这两种⽅法没有任何区别。但⽅括号语法有⼀个优点:可以通过变量来访问属性,如:
var propertyName = 'name';
alert(myObj [propertyName]);
json 在进⾏通过键名来获取值时,需要特别注意⼀下。
把键名赋值给另外⼀个变量,然后通过.⽅式去获取值。这种⽅式是⾏不通的。
var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = "name";
只能通过 [] ⽅式去访问:
var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = "name";
还有在使⽤for遍历时,只能通过 myObj[x] 来获取相应属性的值,⽽不能使⽤ myObj.x
总结,键名为变量时只能⽤ []来获取相应属性值。
还有!如果属性名中包含会导致语法错误的字符,或者属性名是关键字或者保留字,也是使⽤⽅括号表⽰法。如:var response = {
"awards":{'105':50, '107':10,'108':5,'110':3,'111':2, '112':1}
};
console.log(response.awards['105']) //50
console.log(response.awards.105) //报错
循环对象
1、你可以使⽤ for-in 来循环对象的属性:key
var myObj = { "name":"runoob", "alexa":10000, "site":null };
for (x in myObj) { ElementById("demo").innerHTML += x + "<br>"; }
2、**在 for-in 循环对象的属性时,使⽤中括号([])来访问属性的值:value
在使⽤for遍历时,只能通过 myObj[x] 来获取相应属性的值,⽽不能使⽤ myObj.x**
var myObj = { "name":"runoob", "alexa":10000, "site":null };
for (x in myObj) { ElementById("demo").innerHTML += myObj[x] + "<br>"; }
嵌套 JSON 对象 value 可以是合法的 JSON 数据类型
1、JSON 对象中可以包含另外⼀个 JSON 对象:
myObj = {
"name":"runoob",
"alexa":10000,
"sites": {
"site1":"www.runoob",
"site2":"m.runoob"
}
}
2、你可以使⽤点号(.)或者中括号([])来访问嵌套的 JSON 对象。
x = myObj.sites.site1; // 或者 x = myObj.sites["site1"];
修改值
1、你可以使⽤点号(.)来修改 JSON 对象的值:
myObj.sites.site1 = "le";
2、你可以使⽤中括号([])来修改 JSON 对象的值:
myObj.sites["site1"] = "le";
删除对象属性
1、我们可以使⽤ delete 关键字来删除 JSON 对象的属性:
delete myObj.sites.site1;
2、你可以使⽤中括号([])来删除 JSON 对象的属性:
delete myObj.sites["site1"]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论