Extensões JSON - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Extensões JSON

Você pode usar as seguintes extensões para a sintaxe SQL padrão ANSI para facilitar o trabalho com objetos JSON aninhados.

Operador "."

Esse operador acessa membros em objetos JSON incorporados e funciona de forma idêntica ao ANSI SQL e. JavaScript Por exemplo: .

SELECT foo.bar AS bar.baz FROM 'topic/subtopic'

seleciona o valor da propriedade bar no objeto foo a partir da seguinte carga útil de mensagem enviada ao tópico topic/subtopic.

{ "foo": { "bar": "RED", "bar1": "GREEN", "bar2": "BLUE" } }

Se o nome de uma propriedade JSON incluir um caractere de hífen ou caracteres numéricos, a notação 'ponto' não funcionará. Em vez disso, você deve usar a função get para extrair o valor da propriedade.

Neste exemplo, a mensagem a seguir é enviada ao tópico iot/rules.

{ "mydata": { "item2": { "0": { "my-key": "myValue" } } } }

Normalmente, o valor de my-key seria identificado como nessa consulta.

SELECT * from iot/rules WHERE mydata.item2.0.my-key= "myValue"

No entanto, como o nome da propriedade my-key contém um hífen e item2 contém um caractere numérico, a função get deve ser usada conforme mostra a consulta a seguir.

SELECT * from 'iot/rules' WHERE get(get(get(mydata,"item2"),"0"),"my-key") = "myValue"

*Operador

Funciona da mesma maneira que o caractere curinga * em SQL padrão ANSI. É usado somente na cláusula SELECT e cria outro objeto JSON contendo os dados da mensagem. Se a carga útil da mensagem não estiver no formato JSON, * gerará toda a carga útil da mensagem como bytes brutos. Por exemplo: .

SELECT * FROM 'topic/subtopic'
Como aplicar uma função a um valor de atributo

Veja a seguir um exemplo de carga útil JSON que pode ser publicada por um dispositivo:

{ "deviceid" : "iot123", "temp" : 54.98, "humidity" : 32.43, "coords" : { "latitude" : 47.615694, "longitude" : -122.3359976 } }

O exemplo a seguir aplica uma função a um valor de atributo em uma carga útil JSON:

SELECT temp, md5(deviceid) AS hashed_id FROM topic/#

O resultado dessa consulta é o seguinte objeto JSON:

{ "temp": 54.98, "hashed_id": "e37f81fb397e595c4aeb5645b8cbbbd1" }