2013-05-01 65 views
0

所以我想通过一个json对象迭代,但我不知道它是否会有一个或多个孩子。我现在用的是$。每个 jQuery函数与咖啡脚本像这样:

$.each data.searchresults.response.results.result, (i) -> 
    count = i + 1 
    console.log data.searchresults.response.result.address.street 

现在这个工程如果“结果”节点有两个实例;然而,当它只有一个实例时,它不起作用。我的问题是,我是以次最佳方式编写$ .each函数和/或两个,我应该检查存在多少个结果节点,然后决定是循环还是只访问节点?

JSON随着两个http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=X1-ZWz1dj9f5y35l7_agge7&address=3925%20edwardsville%20galena%20road&citystatezip=47122

JSON与一个http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=X1-ZWz1dj9f5y35l7_agge7&address=206%20Plum%20lake%20drive&citystatezip=47172

运行多个结果节点时,但在这里没有错误与结果只有一个节点运行时,它是错误:

TypeError:'undefined'不是一个对象(评估'data.searchresults.response.results.result [i] .address.street')

+0

'JSON node'听起来有点腥。这是XML而不是JSON – Musa 2013-05-01 03:39:52

+1

循环应该适用于任何数量的节点/元素 - 如果theres 0,它不会循环,如果更多,它会循环很多。确保结果的格式相同,因为“$ .each”需要一个对象或数组,并且结果很可能是一个对象数组 – Ian 2013-05-01 03:46:08

回答

1

所以我遇到的问题(愚蠢的我知道)是在.each函数中,我使用完整的对象路径和[i]来访问对象的正确迭代。

因此,而不是使用这种console.log data.searchresults.response.result[i].address.street

我调整了剧本看起来像这样:

$.each data.searchresults.response.results.result, (i,result) -> 
    count = i + 1 
    console.log result.address.street 
相关问题