Power Automate: Convertir objeto JSON en Array para aplicar a cada uno.

Dado que oficialmente no hay una forma de hacer «Propiedad ForEach de JSON» en Power Automate o LogicApps para poder pasar por cada elemento de un objeto JSON, podemos optar por este método que involucra XPath para convertir los Keys del objeto en Array.

Un objeto JSON a convertir

Veámoslo con el siguiente JSON de ejemplo:

{
  "a": 1,
  "b": 2,
  "c": 3
}

Quiero hacer ForEach sobre las propiedades, por lo cual necesito convertir eso en esto:

[
  "a",
  "b",
  "c"
]

Las opciones que podríamos imaginar no nos serán útiles en este caso:

  • ForEach (solo arrays)
  • Data Operations – Select (solo arrays)
  • Array (envuelve un objeto en un array de un objeto)
  • CreateArray (envuelve múltiples objetos en un array)
  • Split (este podría ser usado, pero se nos complicarían los JSON anidados)

Convertir JSON en Array

Visto así, intentemos con XPath. Los objetos XML deben tener un elemento raíz, así que envolvamos una raíz alrededor de nuestro JSON.

{
  "root": {
    "a": 1,
    "b": 2,
    "c": 3
  }
}

El siguiente XPath dividirá cada elemento XML bajo /root/ dentro de un Nodeset (array de elementos XML).

xpath(xml(outputs('Compose_2')), '/root/*')

Después, con un paso Select crearemos la matriz de salida, convirtiendo los keys en arrays.

Power Automate JSON Array 1

Por cada nodo XML, seleccionaremos solo el nombre y mapearemos esto por cada nodo:

xpath(item(), 'name(/*)')

Nuestro resultado será el que deseábamos anteriormente:

[
  "a",
  "b",
  "c"
]
Power Automate JSON Array 2

Usando el Array en un for-each.

Lo mas sencillo será tomar ahora la salida del Select para usar un paso «apply to each» a cada Key del JSON.

Y podremos leer el value de nuestro objeto JSON con la siguiente función.

Power Automate JSON Array 3
variables('ob')[items('Apply_to_each')]

Con esto, hemos conseguido obtener el los keys de un Objeto JSON dentro de Power Automate y pasarlos dentro de un loop como Array, ahora, seremos capaces de usar los valores para crear análisis de objetos más fácilmente.

Si bien podremos contar con una mejor manera de lograr el mismo resultado algún día, de momento esto nos será suficiente.

Cualquier duda, estamos en contacto.

Power Automate: Convertir objeto JSON en Array para aplicar a cada uno.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Scroll hacia arriba