この例では、以下のJSONインスタンスを使用してJSONPath構文の特定の要素を示します。対応するテーブルには、構成要素や使用例についての説明を示しています。
{
"customer" : "CustomerName",
"orderID" : 3,
"price" : "$100000.00",
"items" :
[
{ "ID" : 1, "name" : "disk", "amt" : 10 },
{ "ID" : 2, "name" : "RAM", "amt" : 20 },
{ "ID" : 3, "name" : "monitor", "amt" : 30 },
{ "ID" : 4, "name" : "keyboard", "amt" : 40 },
{ "ID" : 5, "name" : "camera", "amt" : 50 },
{ "ID" : 6, "name" : "button", "amt" : 60 },
{ "ID" : 7, "name" : "mouse", "amt" : 70 },
{ "ID" : 8, "name" : "pen", "amt" : 80 }
]
}
| JSONPath | 説明 | 例 | 例の説明 | 結果 |
|---|---|---|---|---|
| $ | ルート オブジェクト/要素 | $.customer | 顧客の名前 | CustomerName |
| @ | 現在のオブジェクト/要素 | $.items[(@.length-1)] | この順序での最後の項目。 この文脈で'length'キーワードを使用すると、現在のJSON配列の長さとして解釈され、JSON配列のプロパティとして扱われます。このような解釈は、'length'が'@.'構文の直後に置かれる場合に限って行なわれます。'length'という単語が式でそれ以降に置かれる場合は('@.firstChild.length'など)、何らかのエンティティのプロパティとしてではなく、そのエンティティの子の名前として解釈されます。 |
{"ID":8,"name":"pen","amt":80} |
| .. | 再帰的な降下 | $..name | すべての項目名 | ["disk","RAM","monitor", "keyboard","camera","button","mouse","pen"] |
| * | ワイルドカード すべてのオブジェクト/要素(名前を問わない) |
$.items[0].* | 順序の最初の項目のすべての記述 | [1,"disk",10] |
| [ ] | ネイティブ配列演算子 | $.items[0] | 最初の項目 | {"ID":1,"name":"disk","amt":10} |
| [start,end] | インデックスの一覧 | $.items[0,1] | 最初の2つの項目 | [{"ID":1,"name":"disk","amt":10}, {"ID":2,"name":"RAM","amt":20}] |
| [start:end:step] | 配列スライス演算子 startを指定しない場合、デフォルトは最初のインデックスです。 endを指定しない場合、デフォルトは最後のインデックスです。 stepを指定しない場合、デフォルトは1のステップです。 |
$.items[0:4:2] | 1~5(最後のインデックスを含まない)の2ステップごとのすべての項目(つまり、項目1と3) | [{"ID":1,"name":"disk","amt":10}, {"ID":3,"name":"monitor","amt":30}] |
| ?( ) | フィルタ(スクリプト)式を適用します | $.items[?(@.amt<50)] | 50未満の数量を注文したすべての項目をフィルタします | [{"ID":1,"name":"disk","amt":10}, {"ID":2,"name":"RAM","amt":20}, {"ID":3,"name":"monitor","amt":30}, {"ID":4,"name":"keyboard","amt":40}] |
| ( ) | スクリプト式、基になるスクリプト エンジンを使用 | $.items[(@.length-1)] | 順序の最後の項目 | {"ID":8,"name":"pen","amt":80} |