我有一个将数据发送到电源自动化流程的表单。流程触发器的输出如下所示。
如何转换数据以输出这种格式
{
"Form ID": "67249",
"Timezone": "America/Denver",
"User Timezone": "America/Denver"
}
所以我可以使用属性名称将输出存储在变量中?
我尝试使用数组索引并且它有效,但是当省略字段时,索引会向上移动并存储错误的变量值。还尝试使用 select 和 parse json 但该操作输出一个键,该键是数组中的每个对象。 Select 返回结果但无法将其存储在不同的变量中。
有点笨重,但你可以这样做......
首先,我用一组键值对初始化一个
Array
变量。这不是您的具体数据,但这并不重要。看起来像这样...
[
{
"key": "Key 1",
"value": "Value 1"
},
{
"key": "Key 2",
"value": "Value 2"
},
{
"key": "Key 3",
"value": "Value 3"
},
{
"key": "Key 4",
"value": "Value 4"
},
{
"key": "Key 5",
"value": "Value 5"
}
]
第二个和第三个,我初始化了两个
Object
类型的空变量。我需要临时版本是有原因的,稍后我会解释。
第四,需要循环遍历键值对数组。您将在该数组中施展魔法。
第五,您需要使用
Set variable
操作并确保将其分配给临时结果对象。
该步骤中的表达式是...
addProperty(variables('Resulting Object'), item()['key'], item()['value'])
...而需要 temp 变量的原因是因为在使用
Set variable
操作时,您无法进行自我分配。所以基本上,表达式不能用于您正在设置的变量。您可以在 addProperty
表达式中看到,我们指的是非临时结果对象变量,而不是临时变量。
第六,现在将临时对象转移到主对象。我们这样做是因为下次循环出现时,它将引用主/非临时对象并保留我们之前添加的所有现有属性。
最后,这就是最终结果...
{
"Key 1": "Value 1",
"Key 2": "Value 2",
"Key 3": "Value 3",
"Key 4": "Value 4",
"Key 5": "Value 5"
}
注意:我将循环的并发度设置为1,以保持键值对的顺序。您可以选择执行或不执行此操作。