# JSONパス

このセクションでは、Talend Cloud API Testerで使用できるJSONパス式について説明します。

詳細は、[JSONPath - XPath for JSON](http://goessner.net/articles/JsonPath/)を参照してください。

また、[JSON Path Online Evaluator](http://jsonpath.com/)を使用することもできます。基になる実装は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]<br><br>$.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&lt;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])を使って動作 |