この例では、以下の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} |