0

我正在遍历一个 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");
                  }

谢谢。

4

2 回答 2

1

问题是并非数组layoutDescriptions中的每个对象都具有属性container。当您遍历第一个对象时,它会寻找container,没有找到任何东西,然后搜索contenton undefined,引发错误。

此外,在里面data.layoutDescriptions[0].container.content[1],你没有content属性。contentObjects设置为undefined,因此contentObjects.container将失败。

于 2012-08-08T15:29:15.013 回答
1

使用 hasOwnProperty 检查对象是否存在自己的属性:

 var contentObjects = data.layoutDescriptions[0].container.content[1];
 if(contentObjects.hasOwnProperty('container'){
     alert("container exists");
 }
 else{
     alert("nope");
 }
于 2012-08-08T15:29:23.593 回答