繁体   English   中英

如何访问Json数组中的特定元素?

[英]How to access specific elements in a Json array?

我有一个Json数组,其中包含以下元素:“邻接”,“数据”,“id”,“名称”。 在某些元素中,“邻接”不存在。 这是一个例子:

var JsonArray = [
                 {
                   "id" : "id1",
                   "name" : "name1",
                   "data" : {
                             "$type" : "circle",
                             "$color" : "#AEC43B"
                            }
                 }, //Without "adjacencies"

                 {
                   "id" : "id2",
                   "name" : "name2",
                   "data" : {
                             "$type" : "circle",
                             "$color" : "#AEC43B"
                            }
                 }, //Without "adjacencies"

                 {
                    "adjacencies": [
                                    {
                                     "nodeTo": "id1",
                                     "nodeFrom": "id3",
                                     "data": {
                                              "$color": "#416D9C"
                                             }
                                    }
                                    ],
                    "id" : "id3",
                    "name" : "name3",
                    "data" : {
                             "$type" : "circle",
                             "$color" : "#AEC43B"
                            }
                 } //With "adjacencies"
                ];

第一个和第二个元素不包含“邻接”,但第三个元素包含“邻接”。 for (i = 0; i < JsonArray.length; i++)的循环中for (i = 0; i < JsonArray.length; i++)如何访问第三个元素? 例如,有.contain属性吗? 提前致谢:)

一种方法是检查值是否为undefined类型:

for (i = 0; i < JsonArray.length; i++) {
    var item = JsonArray[i];
    if (typeof item.adjacencies !== "undefined") {
        // item has adjacencies property
    }
}

暂且不说:这不是JSON数组 - 它是一个Javascript数组。 没有JSON对象,没有JSON数组,没有JSON。 唯一存在的JSON-y是纯JSON,它是一种序列化格式。

使用hasOwnProperty

所以你可以做到这一点

for (i = 0; i < JsonArray.length; i++){
    if( JsonArray[i].hasOwnProperty('adjacencies') ){
        //Do something here
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM