PUT库存自定义片段

时间:2017-12-07 12:57:30

标签: cumulocity

这是我的设备清单,其中包含自定义任务数组:

{
    ...
    "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

谢谢。

3 个答案:

答案 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>

Template screenshot

现在发布:

//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 [](比如在响应模板中),但这也不行。我没有得到它,也许你可以给我一个小的解决方案,把一个完整的片段放在里面。