在Azure Logic App中解析JSON

时间:2015-09-03 16:24:28

标签: azure azure-logic-apps

我有一个HTTP侦听器,我正在发送一个JSON帖子体。

{
"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发送帖子请求,但最终将通过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

3 个答案:

答案 0 :(得分:10)

这个技巧就是HTTP Listener主体的输出是一个String,所以你需要先将它转换为JSON才能解析它。有一个@parse()命令可以做到这一点。

所以,如果你这样做,它应该有效:

@ {JSON(触发器()。outputs.body.Content).recipient}

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

答案 1 :(得分:2)

您必须在http侦听器的标头中定义内容类型,之后您不需要解析http侦听器的响应,它将自动以描述的格式。

答案 2 :(得分:1)

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

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