このセクションでは、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の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] )を使って動作 |