使用数字键查询 IoT 中心对象

Querying an IoT Hub Object with number key

我正在尝试从第三方 IoT 中心实例的孪生设备中检索信息。

我尝试访问的数据具有以下格式:

{
    "properties": {
        "reported": {
            "softwareLoad": {
                "0": {
                    "systemSWVer": "1.2.0",
                    "picSWVer": "0.0.42",
                    "bootStatus": "inactive",
                    "partitionId": 0
                },
                "1": {
                    "systemSWVer": "1.2.0",
                    "picSWVer": "0.0.42",
                    "bootStatus": "active",
                    "partitionId": 1
               },
               "beamTableCRC": "0x5454"
            }
        }
    }
}

我试图访问变量 systemSWVer 以将其用作 where 子句,但每次我尝试访问时都在检索 [=11= 中的信息时出错] 和 IoT 中心 returns 错误请求。

我试过这个查询

SELECT properties.reported.softwareLoad FROM devices WHERE properties.reported.softwareLoad.0.systemSWVer in ["1.2.0", "2.1.0"]

有没有办法在我的查询中将它用作 where 子句?

注意:我无权访问资源以更改信息的格式。

我尝试重现这个案例,发现了同样的结果。在表达式中添加数字时总是出错。我也找到了解决方法;您可以将它们添加为转义的 Unicode 字符,而不是使用 01。不过,将它们添加为 ASCII Unicode 字符很重要。 0 变为 \u00301 变为 \u0031

试试这个查询:

SELECT properties.reported.softwareLoad FROM devices 
WHERE properties.reported.softwareLoad.\u0030.systemSWVer in ['1.2.0', '2.1.0']

请注意:无论如何,您需要使用单引号。

编辑:我太兴奋了,忘了测试是否只转义整数也行。确实如此。

SELECT properties.reported.softwareLoad FROM devices 
WHERE properties.reported.softwareLoad.[=11=].systemSWVer in ['1.2.0', '2.1.0']