ユーティリティ / JSONPath
ホーム > ユーザガイド > BOT > BOTエディタの使い方 > 拡張機能 > ユーティリティ > JSONPath
Index
アプリ概要
JSONPathを使ってJSONデータをフィルターします。
拡張機能URL | cbot-extension://cloud-bot:utils:json-path:1 |
提供元 | Cloud BOT official |
外部通信 | なし |
バージョン | 1 |
画面説明
入力画面について
実行オプション
結果表示画面について
実行結果
結果が表示されます。
出力形式についての補足事項
出力形式は"JSON"、"リスト"、"テーブル"のいずれかの形式で結果画面に表示できます。
JSON
JSONデータを表示し、取得できます。
リスト
配列(Array)の要素を各行として表形式で表示します。グループデータとして取得することができます。
テーブル
オブジェクトの配列(Array of Object)や配列の配列(Array of Array)を表形式で表示します。各要素は行、オブジェクトのkeyは列に展開されます。グループデータとして取得することができます。
JSONPathについて
用途別サンプル
以下のJSONデータ例をサンプルとして使用します。
{
"output": [
{
"itemName": "CheeseCake",
"price": "500",
"tags": ["Cake", "Cheese"]
},
{
"itemName": "GateauChocolat",
"price": "600",
"tags": ["Cake", "Chocolate"]
},
{
"itemName": "MatchaCake",
"price": "700",
"tags": ["Cake", "Matcha"]
}
]
}
使用用途 | JSONPath(ドット記法) | JSONPath(ブラケット記法) | 結果例(表示形式:JSON) | 備考 |
JSONデータオブジェクト全体を取得する | $ | $ | { "output": [ { "itemName": "CheeseCake", "price": "500", "tags": ["Cake", "Cheese"] }, { "itemName": "GateauChocolat", "price": "600", "tags": ["Cake", "Chocolate"] }, { "itemName": "MatchaCake","price": "700", "tags": ["Cake", "Matcha"] } ] } | "$"はJSONデータの最上位のオブジェクト(ルート要素)を指します。 |
JSONデータオブジェクト内のoutputを取得する | $.output | $["output"] | "output": [ { "itemName": "CheeseCake", "price": "500", "tags": ["Cake", "Cheese"] }, { "itemName": "GateauChocolat", "price": "600","tags": ["Cake", "Chocolate"] }, { "itemName": "MatchaCake", "price": "700", "tags": ["Cake", "Matcha"] } ] | |
JSONデータオブジェクト内のoutputに含まれる、すべての要素を取得する | $.output.* | $["output"][*] | [{"itemName":"CheeseCake","price":"500","tags":["Cake","Cheese"]} ,{"itemName":"GateauChocolat","price":"600","tags":["Cake","Chocolate"]},{"itemName":"MatchaCake","price":"700","tags":["Cake","Matcha"]}] | "*"にインデックスを指定し、特定の要素を取得できます。 例)$.output.0または$["output"][0] |
JSONデータオブジェクト内のoutputに含まれる、各要素のpriceを取得する | $.output.*.price | $["output"][*]["price"] | ["500","600","700"] | 複数の要素は","で区切って取得できます。 例)$.output[0]["price","tags"]または $["output"][0]["price","tags"] |
JSONデータ全体から、任意の階層のすべてのpriceを取得する | $..price | - | ["500","600","700"] | ".."はすべての階層をフィルターし、keyが一致するすべての値を取得できます。 |
JSONデータオブジェクト内のoutputの最初(0番目)と2番目の要素を取得する | - | $.output[0,2] | [{"itemName":"CheeseCake","price":"500","tags":["Cake","Cheese"]} ,{"itemName":"MatchaCake","price":"700","tags":["Cake","Matcha"]}] | |
JSONデータオブジェクト内のoutputの最初(0番目)から連続する要素の範囲を取得する | - | $.output[0:2] | [{"itemName":"CheeseCake","price":"500","tags":["Cake","Cheese"]} ,{"itemName":"GateauChocolat","price":"600","tags":["Cake","Chocolate"]}] | [ < start > : < end > ]の形式で、配列内の連続する要素の範囲指定ができます。 < start > は範囲の開始インデックス(含む)を、 < end > は終了インデックス(含まない)を示します。例えば、[0:2]と指定した場合は、0番目の要素から2番目の要素の直前(1番目の要素)までを取得します。 |
JSONデータオブジェクト内のoutputに含まれる、itemNameの値がCheeseCakeと等しい要素を取得する | $.output[?(@.itemName == 'CheeseCake')] | $.output[?(@["itemName"] == ["CheeseCake"])] | [{"itemName":"CheeseCake","price":"500","tags":["Cake","Cheese"]}] | "@"は配列内の各要素に対して条件を設定し、フィルタリングを行って要素を取得します。 |
JSONデータオブジェクト内のoutputに含まれる、priceの値が600より小さい itemNameとtagsの値を取得する | - | $.output[?(@["price"] < "600")]["itemName","tags"] | ["CheeseCake",["Cake","Cheese"]] | 条件式の書き方はこちら。 |
JSONデータオブジェクト内のoutputに含まれる、priceの値が600以下、かつ itemNameの値がCheeseCakeと等しい要素を取得する | $.output[?(@.price <= 600 && @.itemName == 'CheeseCake')] | $.output[?(@["price"] <= "600" && @["itemName"] == "CheeseCake")] | [{"itemName":"CheeseCake","price":"500","tags":["Cake","Cheese"]}] | 複数条件を組み合わせる書き方はこちら。 |
ドット記法
.keyまたは"key"('key')
ドット記法は、key名がアルファベットで始まりスペースや特殊文字を含まない場合に適した記法です。階層構造を直感的に示すことができます。
ブラケット記法
['key']または["key"]
ブラケット記法は、key名にスペース、ハイフン、日本語などのマルチバイト (全角文字)や特殊文字が含まれる、あるいはkey名が数字で始まるなど、ドット記法が適用できない状況で使用される記法です。 あらゆるkey名を指定することが可能です。
条件式
条件式は、2つの値を比較するために使用します。特定の条件を満たす要素を取得または除外します。
比較演算子 | 意味 |
== | 等しい |
!= | 等しくない |
< | より小さい(左側が右側より小さい) |
> | より大きい(左側が右側より大きい) |
<= | 以下(左側が右側以下) |
>= | 以上(左側が右側以上) |
複数条件の組み合わせ
複数条件は、2つの条件式を組み合わせて使用します。
複雑な条件や特定の定義に基づいて全体の結果をどのように扱うかを決定します。
論理演算子 | 意味 |
&& | 2つの条件がすべてあてはまる場合に真(AND) |
|| | 条件のうち1つでもあてはまる場合に真(OR) |