

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de JSONPath rutas
<a name="amazon-states-language-paths"></a>

**Administración del estado y transformación de los datos**  
Obtenga información sobre cómo [pasar datos entre estados con variables](workflow-variables.md) y cómo [transformar datos con JSONata](transforming-data.md).

En Amazon States Language, una *ruta* es una cadena que comienza por `$` y se puede utilizar para identificar componentes en el texto JSON. Las rutas siguen la [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)sintaxis, que solo está disponible cuando `QueryLanguage` se establece en JSONPath. Puede especificar una ruta para acceder a los subconjuntos de la entrada al especificar valores para `InputPath`, `ResultPath` y `OutputPath`.

Debe utilizar la notación entre corchetes si el nombre de campo contiene algún carácter que no esté incluido en la `member-name-shorthand` definición de la regla [JsonPath ABNF](https://www.ietf.org/archive/id/draft-ietf-jsonpath-base-21.html#jsonpath-abnf). Por lo tanto, para codificar caracteres especiales, como los signos de puntuación (excepto`_`), debe utilizar la notación entre corchetes. Por ejemplo, `$.abc.['def ghi']`. 

## Rutas de referencia
<a name="amazon-states-language-reference-paths"></a>

Una *ruta de referencia* es una ruta cuya sintaxis está limitada de tal forma que solo puede identificar un único nodo en una estructura JSON:
+ Solo puede obtener acceso a los campos de objeto con la notación de punto (`.`) y corchete (`[ ]`).
+ Funciones como `length()` no son compatibles.
+ Los operadores léxicos, que no son simbólicos, como `subsetof` no están admitidos.
+ No se admite el filtrado por expresiones regulares o por referencia a otro valor de la estructura JSON.
+ Los operadores `@`, `,`, `:` y `?` no son compatibles

Por ejemplo, si los datos de entrada del estado contienen los valores siguientes:

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

Las siguientes rutas de referencia devolverían lo siguiente.

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

Algunos estados utilizan rutas y rutas de referencia para controlar el flujo de una máquina de estado o para configurar los valores o las opciones del estado. Para obtener más información, consulte [Modelar el procesamiento de las rutas de entrada y salida del flujo de trabajo con un simulador de flujo de datos](https://aws.amazon.com/blogs/compute/modeling-workflow-input-output-path-processing-with-data-flow-simulator/) y [Utilización JSONPath eficaz](https://aws.amazon.com/blogs/compute/using-jsonpath-effectively-in-aws-step-functions/) en. AWS Step Functions

### Aplanamiento de una matriz de matrices
<a name="flatten-array-of-arrays"></a>

Si el estado [Estado Parallel de un flujo de trabajo](state-parallel.md) o [Estado del flujo de trabajo Map](state-map.md) de las máquinas de estado devuelve una matriz de matrices, puede transformarlas en una matriz plana con el campo [ResultSelector](input-output-inputpath-params.md#input-output-resultselector). Puede incluir este campo dentro de la definición de estados Parallel o Map para manipular el resultado de estos estados.

Para aplanar matrices, utilice la sintaxis: `[*]` en el campo `ResultSelector`, como se muestra en el siguiente ejemplo.

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

Para ver ejemplos que muestran cómo aplanar una matriz, consulte el *Paso 3* de los siguientes tutoriales:
+ [Procesamiento de datos de lotes con una función de Lambda en Step Functions](tutorial-itembatcher-param-task.md)
+ [Procesamiento de elementos individuales con una función de Lambda en Step Functions](tutorial-itembatcher-single-item-process.md)