本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
巢狀物件查詢
您可以使用巢狀 SELECT 子句來查詢陣列和內部 JSON 物件中的屬性。受 SQL 版本 2016-03-23 和更新版本支援。
請考慮下列 MQTT 訊息:
{ "e": [ { "n": "temperature", "u": "Cel", "t": 1234, "v": 22.5 }, { "n": "light", "u": "lm", "t": 1235, "v": 135 }, { "n": "acidity", "u": "pH", "t": 1235, "v": 7 } ] }
範例
您可以使用以下規則將值轉換為新的陣列。
SELECT (SELECT VALUE n FROM e) as sensors FROM 'my/topic'
該規則會產生以下輸出。
{ "sensors": [ "temperature", "light", "acidity" ] }
範例
使用相同的 MQTT 訊息,您也可以使用下列規則查詢巢狀物件中的特定值。
SELECT (SELECT v FROM e WHERE n = 'temperature') as temperature FROM 'my/topic'
該規則會產生以下輸出。
{ "temperature": [ { "v": 22.5 } ] }
範例
您也可以使用更複雜的規則來平面化輸出。
SELECT get((SELECT v FROM e WHERE n = 'temperature'), 0).v as temperature FROM 'topic'
該規則會產生以下輸出。
{ "temperature": 22.5 }