

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utiliser des JSONPath chemins
<a name="amazon-states-language-paths"></a>

**Gestion de l'état et transformation des données**  
Découvrez comment [transmettre des données entre états avec des variables](workflow-variables.md) et [transformer des données avec JSONata](transforming-data.md).

Dans l'Amazon States Language, un *chemin* est une chaîne commençant par `$` laquelle vous pouvez identifier les composants dans le texte JSON. Les chemins suivent [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)la syntaxe, qui n'est disponible que lorsque le `QueryLanguage` paramètre est défini sur JSONPath. Vous pouvez spécifier un chemin pour accéder à des sous-ensembles de l'entrée lors de la spécification des valeurs pour `InputPath`, `ResultPath` et `OutputPath`.

Vous devez utiliser la notation entre crochets si le nom de votre champ contient un caractère qui n'est pas inclus dans la `member-name-shorthand` définition de la règle [JsonPath ABNF](https://www.ietf.org/archive/id/draft-ietf-jsonpath-base-21.html#jsonpath-abnf). Par conséquent, pour coder des caractères spéciaux, tels que les signes de ponctuation (sauf`_`), vous devez utiliser la notation entre crochets. Par exemple, `$.abc.['def ghi']`. 

## Chemins de référence
<a name="amazon-states-language-reference-paths"></a>

Un *chemin de référence* est un chemin dont la syntaxe est limitée de telle sorte qu'elle ne peut identifier qu'un seul nœud dans une structure JSON :
+ Vous pouvez accéder aux champs des objets uniquement en utilisant la notation point (`.`) et crochet (`[ ]`).
+ Les fonctions telles que `length()` ne sont pas prises en charge.
+ Les opérateurs lexicaux, qui ne sont pas symboliques, par exemple, `subsetof` ne sont pas pris en charge.
+ Le filtrage par expression régulière ou par référence à une autre valeur dans la structure JSON n'est pas pris en charge.
+ Les opérateurs`@`, `,``:`, et ne `?` sont pas pris en charge

Par exemple, les données d'entrée d'état contiennent les valeurs suivantes :

```
{
  "foo": 123,
  "bar": ["a", "b", "c"],
  "car": {
      "cdr": true
  }
}
```

Dans ce cas, les chemins de référence suivants renverraient :

```
$.foo => 123
$.bar => ["a", "b", "c"]
$.car.cdr => true
```

Certains états utilisent des chemins d'accès et des chemins de référence pour contrôler le flux d'une machine d'état ou configurer les paramètres ou les options d'un état. Pour plus d'informations, voir [Modélisation du traitement des chemins d'entrée et de sortie du flux de travail avec un simulateur de flux de données](https://aws.amazon.com/blogs/compute/modeling-workflow-input-output-path-processing-with-data-flow-simulator/) et [Utilisation JSONPath efficace dans AWS Step Functions](https://aws.amazon.com/blogs/compute/using-jsonpath-effectively-in-aws-step-functions/).

### Aplatir un tableau de tableaux
<a name="flatten-array-of-arrays"></a>

Si l'[État du flux de travail cartographique](state-map.md)état [État du flux de travail parallèle](state-parallel.md) ou de vos machines d'état renvoie un tableau de tableaux, vous pouvez les transformer en tableau plat avec le [ResultSelector](input-output-inputpath-params.md#input-output-resultselector) champ. Vous pouvez inclure ce champ dans la définition de l'état parallèle ou de l'état cartographique pour manipuler le résultat de ces états.

Pour aplatir les tableaux, utilisez la syntaxe : `[*]` dans le `ResultSelector` champ, comme indiqué dans l'exemple suivant.

```
"ResultSelector": {
    "flattenArray.$": "$[*][*]"
  }
```

Pour des exemples illustrant comment aplatir un tableau, reportez-vous à l'*étape 3* des didacticiels suivants :
+ [Traitement de données par lots avec une fonction Lambda dans Step Functions](tutorial-itembatcher-param-task.md)
+ [Traitement d'éléments individuels avec une fonction Lambda dans Step Functions](tutorial-itembatcher-single-item-process.md)