Antes de poder explorar las funciones de Power Automate a fondo, necesitaremos ser realmente buenos haciendo uso de los JSON, así que he armado este manual que sirve de entrada para hablar al respecto.
¿Que son los objetos JSON?
Los objetos JSON son basicamente diccionarios de valores compuestos por una llave (KEY) y un valor (Value) con las siguientes caracteristicas:
- Siempre estan entre brackets { }
- Están escritos en pares de key/value
- La llave o key debe de ser un valor del tipo string
- El valor o value puede ser una string, un numero, un objeto, un array, un booleano o estar vació (null)
- Cada pareja de key/value esta separada de la siguiente por una coma
- Las parejas se nombran key:value
Un ejemplo de objeto JSON es el siguiente:
{ "nombre":"Sebas", "edad":30, "color":null }
Si eres un usuario común de Automate, seguro has visto estos objetos más de una vez, así que veamos el acordeón con todas las cosas a considerar. Se incluirá también un objeto de construcción JSON compuesto.
Crear Objetos JSON en Power Automate
Iniciemos con algo simple, vamos a definir una variable de objeto y establecer dentro de ella un objeto JSON.
Si vemos la salida de este paso, se establecerá un objeto JSON que se ve así.
Ahora, si quisieramos tomar ese valor dentro de una variable o un compose lo podemos hacer con la siguiente formula.
variables('x').nombre
El resultado al ejecutar sera el siguiente:
Si buscamos reemplazar el value dentro del JSON podemos hacerlo con la siguiente expresión.
json('{"nombre":"Sebastian"}')
Veremos que al correr, el flujo a modificado el JSON:
Union de JSON
Si tenemos dos variables de JSON como se muestra a continuación:
Y queremos unirlas en una sola, podemos usar la expresión UNION para realizar esta operación.
union(variables('x'),variables('y'))
La salida del flujo muestra la unión de ambos.
También podrías combinar lo visto arriba, y meter un valor nuevo en el objeto de forma literal, sin tenerlo en una variable. La expresión cambiara asi:
union(variables('x'),variables('y'),json('{"color":null}'))
Para este momento, nuestra variable ya tendra 3 pares de key/value:
Usar JSON en una condición
Cuando tengamos que usar estos valores JSON para realizar algunas otras acciones, como por ejemplo evaluar si un valor se encuentra dentro de ellos, podemos usar una expresión como la siguiente:
contains(variables('z'),'nombre')
El resultado sera un booleano, ya que la llave nombre existe dentro de nuestro JSON z. Este valor lo podemos usar en una acción de condición como la siguiente.
COALESCE para evitar valores vacíos
Es posible que usando los JSON podamos caer en una llave que no exista, por lo que la siempre buena función COALESCE es la solución:
coalesce(variables('z').color,variables('z').nombre)
Como la key color es null, la función nos devolverá el key nombre.
Creando un JSON dentro de otro JSON
Si necesitamos meter nuestro objeto JSON dentro de una colección mas grande por alguna razón, podemos hacerlo como sigue:
json(concat('{"color":',variables('colores'),'}'))
Tomando en cuenta que existiera una variable llamada colores como esta:
El resultado sera un objeto anidado en el otro:
Y si lo combinamos con la funcion vista arriba, tendriamos un objeto dentro de otro objeto.
Al cual podemos llamar usando la sintaxis del punto para llamar a un key dentro de otro key
variables('z').color.color1
Y obtener un resultado individual.
Cualquier duda nos leemos abajo.