JSON-Erweiterungen - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

JSON-Erweiterungen

Sie können die folgenden Erweiterungen für die ANSI SQL-Syntax verwenden, um die Arbeit mit verschachtelten JSON-Objekten zu vereinfachen.

"." Operator

Dieser Operator greift auf Elemente in eingebetteten JSON-Objekten zu und funktioniert genauso wie ANSI SQL und. JavaScript Beispielsweise:

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

wählt den Wert der bar-Eigenschaft im foo-Objekt aus der folgenden Nachrichten-Payload aus, die an das topic/subtopic-Thema gesendet wurde.

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

Wenn ein JSON-Eigenschaftsname einen Bindestrich oder numerische Zeichen enthält, funktioniert die Notation „Punkt“ nicht. Stattdessen müssen Sie die Funktion get verwenden, um den Wert der Eigenschaft zu extrahieren.

In diesem Beispiel wird die folgende Nachricht an das iot/rules-Thema gesendet.

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

Normalerweise wird der Wert von my-key wie in dieser Abfrage identifiziert.

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

Da der Eigenschaftsname my-key jedoch einen Bindestrich und ein numerisches Zeichen item2 enthält, muss die Funktion get verwendet werden, wie die folgende Abfrage zeigt.

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

*-Operator

Dieser funktioniert genauso wie der Platzhalter * in ANSI SQL. Er wird nur in der SELECT-Klausel verwendet und erstellt ein neues JSON-Objekt, das die Nachrichtdaten enthält. Wenn die Nachrichtnutzlast nicht im JSON-Format vorliegt, gibt * die gesamte Nachrichtnutzlast als Rohbytes zurück. Beispielsweise:

SELECT * FROM 'topic/subtopic'
Anwenden einer Funktion auf einen Attributwert

Im Folgenden finden Sie ein Beispiel für eine JSON-Nutzlast, die von einem Gerät veröffentlicht werden kann:

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

Das folgende Beispiel wendet eine Funktion auf einen Attributwert in einer JSON-Nutzlast an:

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

Das Ergebnis dieser Abfrage ist das folgende JSON-Objekt:

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