外部API連携ボタンにおけるJSONPathの書き方について教えて下さい
JSONPathは、JSONデータから特定の要素を抽出するためのクエリ言語です。JSONPathは、XPathがXMLに対して行うのと同様の方法でJSONデータに対して操作を行うことができます。
以下にJSONPathの基本的な構文と使い方を紹介します。
基本構文
1. ルートノード: $
- 例: $ はJSONのルートを指します。
2. 子ノード: .key
- 例: $.store はルートオブジェクトの store プロパティを指します。
3. 配列の要素: [index]
- 例: $.store.book[0] は store オブジェクトの book 配列の最初の要素を指します。
4. すべての要素: [*]
- 例: $.store.book[*] は store オブジェクトの book 配列のすべての要素を指します。
5. フィルター表現: [?(expression)]
- フィルター表現には対応していません。
6. ワイルドカード: ..
- 例: $..author はどの深さにあるかに関わらず、すべての author プロパティを指します。
具体例
以下に、JSONデータとそれに対するJSONPathクエリの例を示します。
JSONデータ
{
"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
}
}
}
JSONPathクエリ例
- すべての本のタイトルを取得
$.store.book[*].title
結果:
["Sayings of the Century", "Sword of Honour", "Moby Dick", "The Lord of the Rings"]
- すべての著者を取得
$..author
結果:
["Nigel Rees", "Evelyn Waugh", "Herman Melville", "J. R. R. Tolkien"]
- storeオブジェクト内のすべての価格を取得
$.store..price
結果:
[8.95, 12.99, 8.99, 22.99, 19.95]
便利なツール
記述したJSONPathが期待通りに要素を抽出しているかを検証したい場合は、以下のようなツールを使用することができます。