Estensioni JSON - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Estensioni JSON

È possibile usare le estensioni seguenti nella sintassi SQL ANSI per semplificare l'uso degli oggetti JSON nidificati.

Operatore "."

Questo operatore accede ai membri degli oggetti e delle funzioni JSON incorporati in modo identico a ANSI SQL e. JavaScript Per esempio:

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

seleziona il valore della proprietà bar nell’oggetto foo dal seguente payload del messaggio inviato all'argomento topic/subtopic.

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

Se il nome di una proprietà JSON include caratteri quali il trattino o caratteri numerici, la notazione "punto" non funzionerà. Invece, devi utilizzare get function per estrarre il valore della proprietà.

In questo esempio viene inviato il seguente messaggio all'argomento iot/rules.

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

Normalmente, il valore di my-key verrebbe identificato come in questa query.

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

Tuttavia, poiché il nome della proprietà my-key contiene un trattino e item2 contiene un carattere numerico, get function deve essere utilizzato come mostra la seguente query.

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

Operatore *

Funziona nello stesso modo del carattere jolly * in SQL ANSI. Viene usato solo nella clausola SELECT e crea un nuovo oggetto JSON contenente i dati del messaggio. Se il payload del messaggio non è in formato JSON, * restituisce l'intero payload del messaggio come byte non elaborati. Ad esempio:

SELECT * FROM 'topic/subtopic'
Applicazione di un funzione a un valore di attributo

Di seguito è illustrato un esempio di payload JSON che potrebbe essere pubblicato da un dispositivo:

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

L'esempio seguente applica una funzione a un valore di attributo in un payload JSON:

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

Il risultato di questa query è l'oggetto JSON seguente:

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