# Chemin JSON

Cette section décrit les expressions du chemin JSON que vous pouvez utiliser avec Talend Cloud API Tester.

Pour plus d'informations, consultez l'article [JSONPath - XPath pour JSON](http://goessner.net/articles/JsonPath/) (en anglais).

Vous trouverez également un évaluateur en ligne de chemin d'accès JSON à l'adresse suivante : [JSON Path Online Evaluator](http://jsonpath.com/) (en anglais). L'implémentation sous-jacente peut varier de celle utilisée dans Talend Cloud API Tester, ainsi les résultats peuvent varier.

Voici quelques conseils pour utiliser les payloads JSON :

* Le dollar $ désigne un objet racine du contenu JSON.
* Le point . vous permet d'obtenir les attributs d'un objet ou d'aller plus loin dans l'arborescence.
* Les crochets [] ciblent les tableaux et permet de sélectionner un élément particulier ou une portion de ceux-ci.
* Les deux points .. vous permettent de réunir de manière récursive tous les attributs selon leur nom.

Comme vous pouvez le voir ci-dessous, l'implémentation actuelle dans Talend Cloud API Tester suit principalement la référence, mais varie sur certains points.

## Échantillons d'expressions de chemin d'accès JSON

Cette section liste les expressions et leurs résultats par rapport à l'échantillon de fichier JSON suivant :

```
{
  "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
    }
  }
}
```

La table suivante présente certains échantillons d'expressions et leurs résultats.

| Expression | Valeur |
| --- | --- |
| $.store.bicycle.color | La valeur de l'attribut de la couleur du vélo (par exemple "red") |
| $.store.book[0] | Le premier nœud "book" dans "store" |
| $.store.book[1:3]<br><br>$.store.book[1,2] | Un tableau du deuxième et troisième nœud "book" dans "store" |
| $.store.book[-1:] | Un tableau contenant le dernier nœud "book" dans "store" |
| $.store.book[:2] | Un tableau contenant le premier et le deuxième nœud "book" dans "store" |
| $.store.book[1:4:2].author | Un tableau des auteurs du deuxième et quatrième nœud "book" dans "store" (par exemple ["Evelyn Waugh","J. R. R. Tolkien"]) |
| $.store.book[1].\* | Un tableau des valeurs de tous les attributs du deuxième livre (par exemple ["fiction","Evelyn Waugh","Sword of Honour",12.99]) |
| $.store..price | Un tableau des valeurs de tous les attributs "price" du nœud "store" (par exemple les prix des livres et vélos [8.95,12.99,8.99,22.99,19.95]) |
| $.store.book.author | Un tableau des valeurs de tous les attributs "author" du nœud "book" (par exemple ["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]) |
| $.store.book[?(@.isbn)] | Un tableau des livres ayant un attribut "isbn" (par exemple les deux derniers livres) |
| $.store.book[?(@.price&lt;10)] | Un tableau des livres dont le prix est inférieur à "10" |
| $.. | Un tableau de tous les nœuds enfants du nœud racine, récursivement |
| $..category | Un tableau de toutes les valeurs des nœuds "category" (par exemple ["reference","fiction","fiction","fiction"]) |
| $..category[(@.length-1)] | La valeur du dernier nœud "category" |

## Lorsque Talend Cloud API Tester est différent de la référence

L'opérateur étoile

| Expression | Référence | Talend Cloud API Tester |
| --- | --- | --- |
| $.store.book[\*].author | Un tableau avec les auteurs de tous les livres du magasin | Retourne un tableau vide, utilise $.store.book.author à la place |

L'opérateur à deux points

L'expression $..book est interprétée comme un tableau de tous les nœuds book, ainsi elle retourne un tableau contenant un tableau, puisque le nœud book est un tableau :

```
[
  [
          { "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 }
  ]
]
```

Ensuite, les expressions suivantes sont calculées différemment :

| Expression | Référence | Talend Cloud API Tester |
| --- | --- | --- |
| $..book[0] | Un tableau contenant le premier nœud book | Le premier élément du tableau, c'est-à-dire un tableau contenant tous les livres. |
| $..book[-1:] | Un tableau contenant le dernier livre | Non supporté tel quel, fonctionne grâce à ($..book[0][-1:]) |
| $..book[(@.length-1)] | Un tableau contenant le dernier livre | Non supporté tel quel, fonctionne grâce à ($..book[0][(@.length-1)]) |
| $..book[0,1] | Un tableau contenant le premier et deuxième libre | Non supporté tel quel, fonctionne grâce à ($..book[0][0,1]) |
| $..book[:2] | Un tableau contenant le troisième livre | Non supporté tel quel, fonctionne grâce à ($..book[0][:2]) |