我正在努力使用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旨在通过对象定义来表示关联数组,因此它本身不是“错误的”。 –