这是我的设备清单,其中包含自定义任务数组:
{
...
"c8y_IsDevice": {},
"tasks": [
{
"task_status" : "NEW",
"task_id" : "1",
"task_data" : {
...
}
},
{
"task_status" : "DONE",
"task_id" : "2",
"task_data" : {
...
}
},
...
]
...
}
我想创建一个MQTT / SMARTREST PUT模板来按ID和状态更新任务。
例如:800,[task_id],[task_status]
我无法为此找到方法,尤其是它是一个json数组,我所有的尝试最终都会覆盖完整的json数组。 也许有某事。喜欢条件,如果task_id = x - >设置task_status = y
谢谢。
答案 0 :(得分:1)
您只能替换整个片段。没有办法部分修改片段。
答案 1 :(得分:0)
这样做的一种方法是获取整个数组,使用它在本地创建一个新的数组,并进行想要做的更改,最后再将它放入数据库中。它不是一种解决方案,但一直在为我工作。
答案 2 :(得分:0)
感谢您的信息,但我仍然有一个关于更新数组的问题。 关于你的答案,我想更新整个片段。
这是我的广告资源:
"tasks": [
{
"address": {
"street": "Street",
"street_number": "1"
},
"description": "Test Description",
"id": "1",
"status": "NEW"
},
{
"address": {
"street": "Street2",
"street_number": "2"
},
"description": "Test Description 2",
"id": "2",
"status": "DONE"
}
]
我的模板:
801,<$.tasks.status>,<$.tasks.description>,<$.tasks.address.street>,<$.tasks.address.street_number>
现在发布:
//801,SERIAL,status,description,street_name,street_nr
801,SERIAL,NEW,1,2,3,4
当然,这将覆盖数组并只设置一个json对象任务。
"tasks": {
"address": {
"street": "2",
"street_number": "3"
},
"description": "1",
"status": "NEW"
}
所以我在我的模板中尝试了任务[*] / tasks [](比如在响应模板中),但这也不行。我没有得到它,也许你可以给我一个小的解决方案,把一个完整的片段放在里面。