# 设备影子JSON详解
本文档介绍设备影子的JSON格式表达方法。
设备影子JSON文档示例:
{
"state": {
"desired": {
"color": "RED",
"sequence": [
"RED",
"GREEN",
"BLUE"
]
},
"reported": {
"color": "GREEN"
}
},
"metadata": {
"desired": {
"color": {
"timestamp": 1469564492
},
"sequence": {
"timestamp": 1469564492
}
},
"reported": {
"color": {
"timestamp": 1469564492
}
}
},
"timestamp": 1469564492,
"version": 1
}
JSON属性描述,如下表所示。
| 属性 | 描述 |
|---|---|
| desired | 设备的预期状态。仅当设备影子文档具有预期状态时,才包含desired部分。应用程序向desired部分写入数据,更新事物的状态,而无需直接连接到该设备。 |
| reported | 设备的报告状态。设备可以在reported部分写入数据,报告其最新状态。应用程序可以通过读取该参数值,获取设备的状态。JSON文档中也可以不包含reported部分,没有reported部分的文档同样为有效影子JSON文档。 |
| metadata | 当用户更新设备状态文档后,设备影子服务会自动更新metadata的值。设备状态的元数据的信息包含以 Epoch 时间表示的每个属性的时间戳,用来获取准确的更新时间。 |
| timestamp | 影子文档的最新更新时间。 |
| version | 用户主动更新版本号时,设备影子会检查请求中的version值是否大于当前版本号。如果大于当前版本号,则更新设备影子,并将version值更新到请求的版本中,反之则会拒绝更新设备影子。该参数更新后,版本号会递增,用于确保正在更新的文档为最新版本。version参数为long型。为防止参数溢出,您可以手动传入-1将版本号重置为0。 |
说明
设备影子支持数组。更新数组时必须全量更新,不能只更新数组的某一部分。
更新数组数据示例:
- 初始状态:
{
"reported" : {
"colors" : [
"RED",
"GREEN",
"BLUE"
]
}
}
- 更新:
{
"reported" : {
"colors" : [
"RED"
]
}
}
- 最终状态:
{
"reported" : {
"colors" : [
"RED"
]
}
}