JSONPath()の使用例を解説します。
センサーデータ(@cv.Payload@)やトリガー条件で実行するアクションの引数(@tv.Data@)がJSON形式の場合にJSONPath()を使用して値を参照することができます。
サンプルデータ
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
例えば store -> bicycle -> color を参照する場合には
cv.Payload.store.bicycle.color
と記述することができますがJSONPath()を使用した場合には
JSONPath("$.store.bicycle.color", cv.Payload)
と記述することもできます。
JSONPathの第一引数 path
path | 説明 |
---|---|
$ | ルート オブジェクト/エレメント |
@ | カレント オブジェクト/エレメント |
. or [] | 子オペレーター |
.. | 再帰下降 |
* | ワイルドカード |
[] | 添え字演算子 (ネイティブの配列演算子) |
[,] | ユニオン演算子(代替名または配列インデックスをセットとして使用できます) |
[start:end:step] | 配列スライス演算子 |
?() | フィルタ(スクリプト)式 |
() | 基盤となるスクリプトエンジンを使用したスクリプト式 |
JSONPathの第一引数 path の例
例 | 説明 |
---|---|
$.store.book[*].author | store内のbook配列のすべての author |
$..author | すべてのauthor |
$.store.* | store内のbook配列とbicycle |
$.store..price | store内のすべてのprice |
$..book[2] | 3番目のbook |
$..book[(@.length-1)]$..book[-1:] | 最後のbook |
$..book[0,1]$..book[:2] | book配列の最初の2つのbook |
$..book[?(@.isbn)] | book配列のすべてのisbn |
$..book[?(@.price<10)] | book配列のpriceが10より小さいもの |
$..* | すべてのノード/エレメント |
JSONPathの詳細は引用元の こちら を参照してください。
Need more help with this?
Join our slack community for help