【问题标题】:PUT inventory custom fragmentPUT 库存自定义片段
【发布时间】:2017-12-21 00:39:22
【问题描述】:

这是我的带有自定义任务数组的设备清单:

{
    ...
    "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 -> set task_status = y

谢谢。

【问题讨论】:

    标签: cumulocity


    【解决方案1】:

    您只能替换整个片段。无法部分修改片段。

    【讨论】:

      【解决方案2】:

      实现它的一种方法是获取整个数组,使用它在本地创建一个新的数组,其中包含要进行的更改,最后将它再次放入数据库中。这不是一种解决方案,但一直在为我工作。

      【讨论】:

        【解决方案3】:

        感谢您提供信息,但我仍然有关于更新数组的问题。 关于你的答案,我想更新整个片段。

        这是我的库存:

           "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。

        "tasks": {
            "address": {
                "street": "2",
                "street_number": "3"
            },
            "description": "1",
            "status": "NEW"
        }
        

        所以我在我的模板中尝试了 tasks[*]/tasks[](就像在响应模板中一样),但这也不起作用。不明白,或许你可以给我一个小解决方案,在里面放一个完整的片段,里面有一个数组。

        【讨论】:

        • smartrest 模板不支持这种语法。为此,您需要为每个可能的任务数量定义一个 smartrest 模板。
        猜你喜欢
        • 2012-05-22
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2019-10-24
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 2014-04-08
        相关资源
        最近更新 更多