Azure Logic Apps Compose动作中如何生成正确的JSON数组结构
解决Azure Logic Apps Compose动作中变量被转成字符串数组的问题
这个问题我之前做Logic Apps自动化的时候也碰到过,核心原因就是你手里的variables('result')是字符串格式的JSON数组,不是真正的JSON数组对象。直接把它塞进Compose的JSON结构里,Logic Apps会自动把字符串用双引号包裹并转义内部引号,就出现了你看到的带引号的错误结果。
给你两个实用的解决办法:
方法1:用json()函数实时解析变量
在Compose动作的JSON主体里,不要直接写variables('result'),而是用json()函数把字符串转成真正的JSON数组:
{ "place": @json(variables('result')) }
这样Logic Apps会先把字符串形式的数组解析成JSON对象,再嵌入到最终结构里,就能得到你想要的{"place": [{"visit":"name"}, {"visit":"name"}]}格式。
方法2:提前把变量转成JSON数组(更推荐)
如果你的result变量是之前步骤生成的(比如API返回的字符串、拼接出来的字符串),可以在设置变量的时候就用json()函数把它转成JSON数组类型:
json('[ { "visit":"name" }, { "visit":"name" } ]')
之后在Compose里直接引用变量就行:
{ "place": @variables('result') }
这种方式更清晰,避免后续重复做解析操作。
额外验证小技巧
你可以在Compose动作后面加一个Parse JSON动作,用下面的schema验证输出是否符合预期:
{ "type": "object", "properties": { "place": { "type": "array", "items": { "type": "object", "properties": { "visit": { "type": "string" } }, "required": ["visit"] } } }, "required": ["place"] }
内容的提问来源于stack exchange,提问作者Arvind A
相关产品推荐
相关产品推荐

