在 Azure 逻辑应用程序中解析 JSON

Parsing JSON in Azure Logic App

我有一个 HTTP 侦听器,我正在发送一个 JSON post 正文。

{
"recipient":"bob@example.com",
"subject":"this is a test subject",
"body":"this is a test body email"
}

我试图在下一个流程中提取这些单独的参数,但它却出错了!

我希望实现的结果是 "bob@example.com" 作为下一步行动的输入

我试过

"@{triggers().outputs.body.Content.recipient}"

和各种变体,但我怀疑我遗漏了什么!

编辑添加

我目前正在通过 Powershell 发送 post 请求,尽管它最终会结束 c#

$a = @"
{"recipient":"bob@example.com","subject":"this is a test subject","body":"this is a test body email"}
"@

Invoke-WebRequest -Uri     https://httplistenerc743421edf234899a1315aa38c6398bc.azurewebsites.net/listen -Method POST -Body $a

啊,这个技巧是 HTTP 侦听器正文的输出是一个字符串,因此您需要先将其转换为 JSON,然后才能解析它。有一个 @parse() 命令可以做到这一点。

因此,如果您这样做,它应该会起作用:

@{json(触发器().outputs.body.Content).收件人}

那应该给你收件人。如果这不起作用,请告诉我。

你必须在http监听器的header中定义content-type,之后你不需要解析http监听器的响应,它会自动按照描述的格式。

正如我对我所做的那样,其中 azure 函数返回 json 数据为 text/string:

@{body('azure_fun_Name').recipient}
@{body('azure_fun_Name').subject}
@{body('azure_fun_Name').body}