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"] }
          ]
        }
      },

結果を取得するために次を使用している配列の2番目の要素で失敗します

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

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 に答える
1

問題は、配列内のすべてのオブジェクトがlayoutDescriptions属性を持っているわけではないということですcontainer。最初のオブジェクトをループすると、containerそれは検索し、何も見つからず、次にcontentonを検索してundefined、エラーをスローします。

また、内部data.layoutDescriptions[0].container.content[1]には属性がありませんcontentcontentObjectsに設定されるundefinedため、contentObjects.container失敗します。

于 2012-08-08T15:29:15.013 に答える