我正在努力使用Nest API及其對結構的JSON響應。我想要一個結構對象列表,但是Nest做了多個名爲結構ID的屬性。對我來說,看起來實施這個的人完全誤解了如何使用JSON。我希望能夠讓Nest API返回更合理的JSON結構。有什麼方法可以從Nest獲得更多對列表友好的JSON repsonse?如果是這樣,怎麼樣?將巢結構作爲一個列表?
這是鳥巢如何返回結構:
{
"structures": {
"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw": {
"structure_id": "VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw",
"thermostats": [
"peyiJNo0IldT2YlIVtYaGQ"
],
"smoke_co_alarms": [
"RTMTKxsQTCxzVcsySOHPxKoF4OyCifrs"
],
"devices": {},
"away": "home",
"name": "Home",
"country_code": "US",
"postal_code": "94304",
"peak_period_start_time": "2015-10-31T23:59:59.000Z",
"peak_period_end_time": "2015-10-31T23:59:59.000Z",
"time_zone": "America/Los_Angeles",
"eta": {},
"wheres": {
"Fqp6wJI...": {
"where_id": "Fqp6wJI...",
"name": "Bedroom"
}
}
}
}
}
這是我想得相反:
{
"structures": [
{
"structure_id": "VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw",
"thermostats": [
"peyiJNo0IldT2YlIVtYaGQ"
],
"smoke_co_alarms": [
"RTMTKxsQTCxzVcsySOHPxKoF4OyCifrs"
],
"devices": [],
"away": "home",
"name": "Home",
"country_code": "US",
"postal_code": "94304",
"peak_period_start_time": "2015-10-31T23:59:59.000Z",
"peak_period_end_time": "2015-10-31T23:59:59.000Z",
"time_zone": "America/Los_Angeles",
"eta": {},
"wheres": [
{
"where_id": "Fqp6wJI...",
"name": "Bedroom"
}
}
]
}
}
沒有什麼不對的地方,這就是所謂的關聯數組。之前也有人問過,例如這裏:http://stackoverflow.com/questions/6047460/how-to-loop-through-an-json-associative-array-in-javascript細節取決於你的編程環境 –
「它沒有錯」。也許。但是,你能向我解釋一下在哪種情況下使用關聯數組是合理的嗎?在這種情況下,非常清楚的是,它使用的是完全相同類型的對象,並且數據在列表中是有意義的。爲什麼有人會使用關聯數組而不是使用列表? –
@ThomasClemensen您可以在一個對象上進行O(1)查找,這個查找包含一個與順序無關的唯一標識數據(該結構對象不是)。在視圖中執行id並將其細節與原始對象的單一副本進行協調,而無需遍歷數組或在原始數據結構上保留順序。無論哪種方式JSON旨在通過對象定義來表示關聯數組,因此它本身不是「錯誤的」。 –