JSONパス
このセクションでは、Talend Cloud API Testerで使用できるJSONパス式について説明します。
詳細は、JSONPath - XPath for JSONを参照してください。
また、JSON Path Online Evaluatorを使用することもできます。基になる実装はTalend Cloud API Testerで使用されているものとは異なる場合があるため、結果は同じになるとは限りません。
JSONペイロードの使用に役立つヒントを以下に示します:
- ドル記号$は、JSONコンテンツのルートオブジェクトを識別します。
- ドット記号.は、オブジェクトの属性を取得したり、ツリー内を深く移動したりするために使用します。
- 角括弧[]は、配列をターゲットとし、特定のエレメントまたはスライスを選択できるようにします。
- ダブルドット..は、名前に基づいてすべての属性を再帰的に収集できます。
以下に示すように、Talend Cloud API Testerの現在の実装は主に参照されるとおりですが、いくつかの点で異なります。
JSONパス式のサンプル
このセクションでは、以下のサンプル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
}
}
}
以下の表は、いくつかのサンプル式とその結果を示しています。
式 | 値 |
---|---|
$.store.bicycle.color | 自転車の色属性の値(red)。 |
$.store.book[0] | storeの最初のbookノード |
$.store.book[1:3] $.store.book[1,2] |
storeの2番目と3番目のbookノードの配列 |
$.store.book[-1:] | storeの最後のbookノードを含む配列 |
$.store.book[:2] | storeの1番目と2番目のbookノードの配列 |
$.store.book[1:4:2].author | storeの2番目と4番目のbookノードの著者の配列(["Evelyn Waugh","J. R. R. Tolkien"]) |
$.store.book[1].* | 2冊目の本のすべての属性の値の配列(["fiction","Evelyn Waugh","Sword of Honour",12.99]) |
$.store..price | storeノードのすべての属性priceの値の配列(書籍と自転車の価格)[8.95,12.99,8.99,22.99,19.95]) |
$.store.book.author | bookノードのすべての属性authorの値の配列(つまり["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]) |
$.store.book[?(@.isbn)] | 属性isbnを持つ書籍の配列(最後の2冊) |
$.store.book[?(@.price<10)] | 価格が10未満の書籍の配列 |
$.. | 再帰的にルートノードのすべての子ノードの配列 |
$..category | Categoryノードのすべての値の配列(つまり["reference","fiction","fiction","fiction"]) |
$..category[(@.length-1)] | 最後のCategoryノードの値 |
Talend Cloud API Testerが基準と異なる場合
スター演算子
式 | 参照 | Talend Cloud API Tester |
---|---|---|
$.store.book[*].author | ストア内のすべての書籍の著者を含む配列 | 空の配列を返し、代わりに$.store.book.authorを使用 |
ダブルドット演算子
式$..bookは、bookノードが配列であるため、配列を含む配列を返すように、すべての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 }
]
]
その後、次の式は異なる方法で計算されます:
式 | 参照 | Talend Cloud API Tester |
---|---|---|
$..book[0] | 最初のbookノードを含む配列 | 配列の最初のエレメント、つまりすべてのブックを含む配列を言います。 |
$..book[-1:] | 最後の本を含む配列 | そのままではサポートされておらず、($..book[0][-1:])を使って動作 |
$..book[(@.length-1)] | 最後の本を含む配列 | そのままではサポートされておらず、($..book[0][(@.length-1)])を使って動作 |
$..book[0,1] | 1冊目と2冊目の本を含む配列 | そのままではサポートされておらず、($..book[0][0,1])を使って動作 |
$..book[:2] | 3冊目の本を含む配列 | そのままではサポートされておらず、($..book[0][:2])を使って動作 |