json学习-嵌套对象中数组的遍历

定义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,而不会影响数组长度,即将其变为稀疏数组

猜你喜欢

转载自blog.csdn.net/weixin_43388844/article/details/85171629
今日推荐