定义json对象
var myObj={
"name":"OY",
"num":16110126,
"sites":[
{"name":"OY1","num":26,"site":["some1","any1","thing1"]},
{"name":"OY2","num":126,"site":["some2","any2","thing2"]},
{"name":"OY3","num":110126,"site":["some3","any3","thing3"]}
]
}
遍历输出
function myfunc(){
var x="";
for(var k in myObj){
x+="<h1 style=\"color:red; \">"+myObj[k]+"</h1>"; //最外层循环输出myObj的三个属性所对应的值
for(var i in myObj.sites){
x+="<h3 style=\"color:blue; float:left\">"+myObj.sites[i].name+"</3>"; //中间层循环输出嵌套对象sites的name属性的值
for(var j in myObj.sites[i].site){
x+="<p style=\"color:green;\">"+myObj.sites[i].site[j]+"</p>";//最内层循环输出site数组的值
}
}
}
document.getElementById("demos").innerHTML=x; //输出内容
}
输出效果
学习点
1.json数据的格式是:键值对(“键”:“值”),且用逗号,分隔
2.json中的值 数字和null 不加引号
3.json对象用大括号{} 可以存多个key/value(键/值)对,数组用[] 可以存多个值或多个对象
4.json文件类型为.json后缀
5.可以删除对象中的属性和修改对象中的值
6.上例for循环中myObj[k]获得值value,而直接用k获得键key
一些笔记点
json 对象和 json 字符串的区别
json对象 :var str2 = { “name”: “asan”, “sex”: “man” };
json字符串:var str1 = ‘{ “name”: “deyuyi”, “sex”: “man” }’;
在使用for遍历时,只能通过 myObj[x] 来获取相应属性的值,而不能使用 myObj.x
<div id="demo"></div> <script> var myObj = { "name":"noname", "num":126, "site":"www.csdn.com" }; for (x in myObj) { document.getElementById("demo").innerHTML += myObj[x] + "<br>"; } </script>
json 在进行通过键名来获取值时,需要特别注意一下。把键名赋值给另外一个变量,然后通过.方式去获取值。这种方式是行不通的。
var myObj, x; myObj = { "name":"noname", "num":126, "site":null }; x = "name"; document.getElementById("demo").innerHTML = myObj.x; // 结果是 undefined
只能通过 [] 方式去访问:
var myObj, x; myObj = { "name":"noname", "num":126, "site":null }; x = "name"; document.getElementById("demo").innerHTML = myObj[x]; // 结果是 noname
json中的delete运算符并不是彻底删除元素,而是删除它的值,但仍会保留空间。delete 只是将该值置为undefined,而不会影响数组长度,即将其变为稀疏数组