

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando JSONPath caminhos
<a name="amazon-states-language-paths"></a>

**Gerenciar estados e transformar dados**  
Saiba mais sobre como [transmitir dados entre estados com variáveis](workflow-variables.md) e [transformar dados com JSONata](transforming-data.md).

Na Amazon States Language um *caminho* é uma string que começa com `$`, que você pode usar para identificar componentes dentro do texto JSON. Os caminhos seguem a [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)sintaxe, que só está disponível quando definida como. `QueryLanguage` JSONPath É possível especificar um caminho para acessar os subconjuntos de entrada definindo valores para `InputPath`, `ResultPath` e `OutputPath`.

Você deve usar a notação de colchetes se o nome do campo contiver algum caractere que não esteja incluído na `member-name-shorthand` definição da regra [JsonPath ABNF](https://www.ietf.org/archive/id/draft-ietf-jsonpath-base-21.html#jsonpath-abnf). Portanto, para codificar caracteres especiais, como sinais de pontuação (excluindo `_`), você deve usar a notação de colchetes. Por exemplo, .`$.abc.['def ghi']` 

## Caminhos de referência
<a name="amazon-states-language-reference-paths"></a>

Um *caminho de referência* é um caminho cuja sintaxe é limitada para que possa identificar somente um nó em uma estrutura JSON:
+ Você pode acessar os campos de objeto usando somente ponto (`.`) e colchete (`[ ]`).
+ Funções como `length()` não são compatíveis.
+ Operadores lexicais, que não são simbólicos, como `subsetof` não são compatíveis.
+ A filtragem por expressão regular ou por referência a outro valor na estrutura JSON não é aceita.
+ Os operadores `@`, `,`, `:` e `?` não são aceitos.

Por exemplo, se os dados de entrada de estado contivessem os seguintes valores:

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

Os caminhos de referência a seguir retornariam o seguinte:

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

Alguns estados usam caminhos e caminhos de referência para controlar o fluxo de uma máquina de estado ou configurar as definições ou opções de um estado. Para obter mais informações, consulte [Modelagem do processamento do caminho de entrada e saída do fluxo de trabalho com simulador de fluxo de dados](https://aws.amazon.com/blogs/compute/modeling-workflow-input-output-path-processing-with-data-flow-simulator/) e [Uso JSONPath eficaz em AWS Step Functions](https://aws.amazon.com/blogs/compute/using-jsonpath-effectively-in-aws-step-functions/).

### Nivelamento de uma matriz de matrizes
<a name="flatten-array-of-arrays"></a>

Se o estado [Estado paralelo do fluxo de trabalho](state-parallel.md) ou [Estado de mapa do fluxo de trabalho](state-map.md) em suas máquinas de estado retornar uma matriz de matrizes, você poderá transformá-las em uma matriz nivelada com o campo [ResultSelector](input-output-inputpath-params.md#input-output-resultselector). Você pode incluir esse campo na definição do estado Paralelo ou Mapa para manipular o resultado desses estados.

Para nivelar matrizes, use a sintaxe `[*]` no campo `ResultSelector`, conforme mostrado no exemplo a seguir.

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

Para exemplos mostrando como nivelar uma matriz, consulte a *Etapa 3* nos seguintes tutoriais:
+ [Processar dados em lote em uma função do Lambda no Step Functions](tutorial-itembatcher-param-task.md)
+ [Processar itens individuais com uma função do Lambda no Step Functions](tutorial-itembatcher-single-item-process.md)