使用数字键查询 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 字符,而不是使用 0
或 1
。不过,将它们添加为 ASCII Unicode 字符很重要。 0
变为 \u0030
,1
变为 \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']
我正在尝试从第三方 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 字符,而不是使用 0
或 1
。不过,将它们添加为 ASCII Unicode 字符很重要。 0
变为 \u0030
,1
变为 \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']