【发布时间】:2019-07-21 02:50:40
【问题描述】:
我已经研究了几个小时了,还是搞不清楚。所以我想也许这里有人会有想法。
我有正在发布到事物影子的 JSON(发布的 JSON 格式不受我的控制)。 JSON 如下所示:
{"state":{"reported":{"0013A20011223344":{"input_1":1}}}}
我尝试了这个用于向 SNS 发送发布的查询语句:
SELECT "input closed" AS default FROM "$aws/things/Cell_Test_Thing/shadow/update" WHERE state.reported.0013A200418C5535.input_1 = 1
问题是 SQL 查询不喜欢以 0 开头的键。我通过将 0013... 替换为此处的设备来确定这一点,它运行良好:
SELECT "input closed" AS default FROM "$aws/things/Cell_Test_Thing/shadow/update" WHERE state.reported.device.input_1 = 1
所以问题在于 JSON 键以数字开头。如果我将设备更改为 device0 它可以工作,但如果你将它更改为 0device 它会失败。据我所知,以数字开头的 JSON 键是完全有效的,因此希望有一个解决方法。
想法?
【问题讨论】:
-
你试过用引号包围“列”吗?其他 SQL 实现allow for that.
-
感谢您的意见@Ellesedil。我尝试用这样的刻度封装 ID,但收到错误意外字符 '
' SELECT "Input Closed" AS default FROM "$aws/things/Cell_Test_Thing/shadow/update" WHERE state.reported.0013A200418C5535`.input_1 = 1 -
嗯,我很确定答案是用一些东西包围属性路径,甚至路径的各个部分。不过,我怀疑它应该是倒钩。尝试一些东西。
-
@TravisElliott 你能找到解决这个问题的方法吗?