Cómo usar Okta Workflows: Leer una ruta JSON con notación de puntos

Acerca del autor

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

28 octubre 2022 Tiempo de lectura: ~

A person is seated at a desk working on a computer in a modern office environment

Okta Workflows es una plataforma sin código para automatizar los procesos de identidad. El equipo de Workflows celebra horas de oficina semanales donde responden a las preguntas de los desarrolladores.

Esta publicación de blog se basa en una pregunta formulada durante el horario de oficina: ¿Cómo leer una ruta JSON con notación de puntos en Workflows? 

Primeros pasos

Al crear automatizaciones de Workflows, probablemente necesitará leer valores de un objeto JSON. Por ejemplo, desde un extremo de API externo que devuelve datos en formato JSON. Workflows tienen dos tarjetas para ayudar a leer (recuperar) valores de JSON:

  • Objeto – Obtener
  • Objeto – obtener múltiples

Utilice el siguiente JSON para mostrar cómo funcionan las tarjetas. 

{ 
    "producto": "helado", 
    "ingredientes": { 
        "ingrediente": [{ 
                "id": 100, 
                "tipo": "chocolate" 
            }, 
            { 
                "id": 200, 
                "tipo": "vainilla" 
            }, 
            { 
                "id": 300, 
                "tipo": "caramelo" 
            }
        ]
    },
    "tienda": {
        "inventario": {
            "instock": 100,
            "pedidos": 50
        }
    }
}

La notación de puntos es una ruta que corresponde a un elemento en JSON. 

Por ejemplo, una ruta de producto devolverá:

helado

Uso del objeto: obtener la tarjeta para leer JSON

En los Workflows, utilice el objeto – get para leer una ruta JSON: 

Okta Workflows Object Get card displaying an input object with product and ingredients JSON, a path set to product, and an empty output field. Uso de la tarjeta Get para leer datos de ruta JSON

Probando esta tarjeta:

Test "Get" modal displaying an input JSON object, path notation set to product, and evaluated output string "ice cream". Probando la tarjeta Get

Veamos más ejemplos. 

Utilizando la ruta ingredients.ingredient.0 dará como resultado:

{ 
"id": 100,

"type": "chocolate" 

}

Resultado al realizar la prueba utilizando la tarjeta objeto-obtener: 

Interface for testing a JSON path with dot notation, showing input JSON, path ingredients.ingredient.0, and output JSON. Utilizando la notación de puntos en la ruta

Un aspecto importante a tener en cuenta es que el tipo de salida debe coincidir con el tipo JSON. Si la ruta que ingresó recupera texto sin formato, el tipo debe ser Texto. Si la ruta recupera un objeto, entonces el tipo debe establecerse en Objeto (de lo contrario, obtendrá resultados incorrectos). 

Utilizando el ejemplo anterior, al establecer el tipo de salida en Texto se obtendrá lo siguiente: 

Test "Get" interface showing a JSON input object, path notation ingredients.ingredient.0, and output displaying [object Object]. Probando la tarjeta Get con un tipo de salida incorrecto.

Configurar el tipo de salida correcto: 

Okta Workflows Object Get card configured with path ingredients.ingredient.0 and an orange arrow pointing to the output field labeled "Enter key name here". Probando la tarjeta Get con un tipo de salida correcto.

Este ejemplo muestra cómo acceder a una matriz con ingredients.ingredient.1.type:

Test "Get" modal displaying an array with chocolate and vanilla objects, path ingredients.ingredient.1.type, and output value "vanilla". Acceso a un array mediante una ruta con notación de puntos.

Tenga en cuenta que el tipo de salida está configurado como Texto ya que la salida es una cadena de texto. 

Otro ejemplo usando la ruta de shop.inventory devolverá

{ 
"en stock": 100,

"pedido": 50 
}
Test "Get" modal displaying an input object with shop inventory JSON, path shop.inventory, and output JSON showing instock and ordered counts. Probando la tarjeta Get para acceder a un objeto JSON.

Tenga en cuenta que el tipo de salida está configurado como Objeto, ya que la salida es un objeto. 

Uso de objetos: obtenga varios para leer JSON

Objeto – obtiene como resultado una única ruta JSON. La tarjeta Objeto – obtener múltiples funciona de manera similar y puede generar múltiples rutas. Introduzca cualquier número de rutas que necesite como resultado:

Okta Workflows Object Get Multiple card showing JSON input data, multiple path inputs including product and shop.inventory, and an orange arrow pointing to a selected path field. Usando la tarjeta Get Multiple

Tenga en cuenta que el tipo de salida se establece en la ruta cuando se utiliza la tarjeta Objeto–Obtener varios. 

Test "Get Multiple" modal displaying input JSON and corresponding outputs for paths product, ingredients.ingredient.0, ingredients.ingredient.1.type, and shop.inventory. Probando la función Obtener varias tarjetas

El evaluador en línea de JSONPath es una herramienta en línea donde puedes probar tus rutas con notación de puntos. 

JSONPath Online Evaluator web interface showing input JSON, JSONPath shop.inventory, and evaluated results displaying instock and ordered counts. Herramienta evaluadora en línea de JSONPath

Si necesita validar (y formatear) una muestra JSON, utilice la herramienta JSON Lint.

Obtén respuesta a tus preguntas sobre Workflows.

¿Tienes alguna pregunta sobre Okta Workflows? ¿No sabes cómo crear un flujo? Únase a las horas de oficina comunitarias semanales para obtener ayuda. 

Acerca del autor

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

Continúe con su recorrido de identidad