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

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました