我正在迭代一个json对象,由于一个额外的元素而失败。
见下面的代码
{
"rootLayout":"main",
"layoutDescriptions":[
{
"type":"Panel",
"label":"Repeating Groups By Subform",
"layout":"SimpleForm",
"content":[
{ "type":"label", "constraint":"newline", "text":"Contacts" },
{ "type":"repeatableGroup", "property":"contacts", "contentRef":"ContactSubForm" }
]
},
{
"type":"Panel",
"label":"",
"container" : {
"type":"Panel",
"layout":"SimpleForm",
"content":[
{ "type":"label", "constraint":"newline", "text":"Contact Name" },
{ "type":"ListView", "property":"contactName", "listProps":["contactName","telephone","email"] }
]
}
},
它在数组中的第二个元素上失败我使用以下内容来获取结果
data.layoutDescriptions[0].container.content[i].content
我知道它停止了,因为
data.layoutDescriptions[0].container.content[1].content
预计
data.layoutDescriptions[0].container.content[1].container.content
所以我的问题是如何说容器是否存在这样做呢。
我正在尝试这一点,但这不起作用。
var contentObjects = data.layoutDescriptions[0].container.content[1].content;
if(contentObjects.container){
alert("container exists");
}
else{
alert("nope");
}
感谢。
答案 0 :(得分:1)
问题是数组layoutDescriptions
内的每个对象都不具有属性container
。当您遍历第一个对象时,它会查找container
,找不到任何内容,然后在content
上搜索undefined
,从而引发错误。
此外,在data.layoutDescriptions[0].container.content[1]
内,您没有content
属性。 contentObjects
设置为undefined
,因此contentObjects.container
将失败。
答案 1 :(得分:1)
使用hasOwnProperty检查对象是否存在自己的属性:
var contentObjects = data.layoutDescriptions[0].container.content[1];
if(contentObjects.hasOwnProperty('container'){
alert("container exists");
}
else{
alert("nope");
}