2015-09-05 213 views
0

所以,與我之前的問題here(我不確定是否提出一個新問題或編輯舊問題)類似,我成功地使用所看到的代碼解析了JSON響應body下面。解析JSON數組對象:undefined屬性

但是,當試圖對event_calendar_date做同樣的處理時,我得到這個:Failed with: TypeError: Cannot read property 'und' of undefined。我會假設爲了訪問數組中的下一個對象,這兩個方法都是相同的,但是看起來並非如此。

從服務器

JSON響應:

[ 

    { 
     "revision_uid":"1", 
     "body":{ 
      "und":[ 
       { 
        "value":"Blah Blah.", 
        "summary":"", 
        "format":null, 
        "safe_value":"Blah Blah.", 
        "safe_summary":"" 
       } 
      ] 
     }, 
     "event_calendar_date":{ 
      "und":[ 
       { 
        "value":"2015-07-20 14:00:00", 
        "value2":"2015-07-20 20:00:00", 
        "timezone":"America/New_York", 
        "timezone_db":"America/New_York", 
        "date_type":"datetime" 
       } 
      ] 
     } 
    } 

] 

我的代碼:

Parse.Cloud.httpRequest({ 
    method: "GET", 
    url: 'http://www.scolago.com/001/articles/views/articles', 
    success: function(httpResponse) { 
     var data = JSON.parse(httpResponse.text); 
     var articles = new Array(); 
     for (var i = 0; i < data.length; i++) { 
      var Articles = Parse.Object.extend("Articles"), 
       article = new Articles(), 
       content = data[i]; 

      article.set("body", content.body.und[0].value); 
      article.set("vid", content.vid); 
      article.set("title", content.title); 

      article.set("events", content.event_calendar_date.und[0].value); 

      articles.push(article); 
     }; 


     // function save(articles); 
     Parse.Object.saveAll(articles, { 
      success: function(objs) { 
       promise.resolve(); 
      }, 
      error: function(error) { 
       console.log(error); 
       promise.reject(error.message); 
      } 
     }); 

    }, 
    error: function(error) { 
     console.log(error); 
     promise.reject(error.message); 
    } 
}); 
+1

在var數據上做一個console.log,它將在檢查器中顯示數據的結構,然後您可以看到它的內容。這將幫助您調試問題 – mic

+1

檢查我的答案。 –

回答

2

恐怕你沒給我們所有的代碼,或者你使用的不是你在此發佈的代碼的問題,因爲它應該運行正常,因爲你可以看到in this demo

for (var i = 0; i < data.length; i++) { 
    var content = data[i]; 
    console.log(content.event_calendar_date.und[0].value); 
}; 

編輯和解決方案

正如我所料,你得到的JSON沒有字段event_calendar_date第二和第三個對象。我檢查了您的full code on GitHub.

第一個對象有正確的event_calendar_date字段,但是下一個記錄沒有。看看你是如何格式化JSON - http://www.jsoneditoronline.org/?id=b46878adcffe92f53f689978873a3474

您需要先檢查當前循環迭代中是否存在content.event_calendar_date記錄,或將event_calendar_date添加到JSON響應中的所有記錄中。

+0

那麼[這裏](https://github.com/Scolago/CloudCode/blob/master/cloud/main.js)是完整的代碼,如果你認爲它會有所幫助。但afaik,我發佈了所有相關的代碼。 – uknj

+1

回答更新了您的真實問題。 –

+0

我不相信我將能夠改變JSON響應,那麼簡單的if語句來檢查'content.event_calendar_date'是否適合該任務?謝謝您的幫助。 – uknj