将Nest结构作为列表?

时间:2015-09-07 14:44:31

标签: json nest-api

我正在努力使用Nest API及其对结构的JSON响应。我想要一个结构对象列表,但是Nest创建了多个名为结构ID的属性。对我而言,实现这一点的人看起来完全误解了如何使用JSON。我希望能够让Nest API返回更合理的JSON结构。有没有办法从Nest获得更友好的JSON repsonse。如果是这样,怎么样?

这是Nest返回结构的方式:

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

1 个答案:

答案 0 :(得分:2)

JSON没有任何问题,你看到的是associative array,它是一种集合形式,就像数组,列表或集合一样。在JSON中,关联数组可以表示为对象{}。它是一个非常基本的数据结构,有许多名称,包括Map或Dictionary,具体取决于所使用的编程语言。

是否使用关联数组或普通数组/列表在很大程度上取决于您希望访问项目的方式。它与存储在集合中的对象类型没有任何关系。

如果您想通过键值和"正常"来访问项目,通常会使用关联数组。数组/列表,如果要按位置访问项目。同样"正常"如果项的顺序很重要,则数组/列表通常更好,而关联数组通常不是有序的(尽管它们可能取决于实现细节)。

大多数编程环境允许您迭代关联数组的键值列表,允许类似访问" normal"阵列/列表。

以下是JavaScript中的一个简单示例:

var c;
c = [1, 2]; // ordinary array
c[0]; // access by position

var i;
for (i = 0; i < c.length; ++i) { // loop through all items and ...
    console.log(c[i]); // access by position
}

c = {"key1": 1, "key2": 2}; // associative array
c.key2; // access by key

var key;
for (key in c) { // iterate over all keys and ...
    console.log(c[key]); // access by key value
}