【问题标题】:How do I iterate a list of json objects in an Azure Pipeline ForEach loop如何在 Azure Pipeline ForEach 循环中迭代 json 对象列表
【发布时间】:2021-12-21 15:19:15
【问题描述】:

我知道我已经接近完成这项工作,但我错过了一些东西(希望是一些非常简单的东西)。我有一个函数需要将对象列表传递到 Azure foreach 循环。该对象包含将用于生成电子邮件的信息。所有代码都在工作,但我无法在 foreach 中遍历它(它只是将列表视为 1 个对象并且只发送第一封电子邮件)

   results.Add(new EmailModel()
    {
        EmailMainRecipient = "craig@email.com",
        EmailCCRecipients = string.Empty,
        EmailTitle = "Test1",
        EmailMessage = "Test1"
    });

为了便于讨论,我只执行上述 3 次以创建 3 条记录,这些记录由函数作为 json 对象返回(所有这些都有效)。我认为我缺少标记的地方是我的 foreach 的“项目”。我正在使用:

@array(activity('Craig_TestingForEach').output.Response)

foreach 仅将其视为 1 个对象,并且仅处理 1 封电子邮件(即使我已将其中 3 个作为 EmailModel 列表传入 - 并且 foreach 内部函数的输入确实显示了所有 3 个)。将该列表传递给 foreach 以便它将“Craig_TestingForEach”的输出视为 EmailModel 对象的数组并分别处理每个对象的正确方法是什么?

感谢您的任何指点!

编辑:如果有帮助...这就是我从“Craig_TestingForEach”返回列表的方式

return new ObjectResult(results);

该函数可能会产生任意数量的结果...我刚才以 3 为例。

这就是 EmailHandler 函数正在接收的内容。

"[{\"emailMainRecipient\":\"craig@email.com\",\"emailCCRecipients\":\"\",\"emailTitle\":\"Test1\",\"emailMessage\":\"Test1\"},
{\"emailMainRecipient\":\"craig@email.com\",\"emailCCRecipients\":\"\",\"emailTitle\":\"Test2\",\"emailMessage\":\"Test2\"},
{\"emailMainRecipient\":\"craig@email.com\",\"emailCCRecipients\":\"\",\"emailTitle\":\"Test2\",\"emailMessage\":\"Test2\"}]"

【问题讨论】:

    标签: azure foreach azure-functions parameter-passing


    【解决方案1】:

    在尝试了一些不同的事情后,我能够解决这个问题。我只需要创建一个对象来传递包含列表本身的“Craig_TestingForEach”...

    public class EmailTempHolder
    { 
        public List<EmailModel> Emails { get; set; }
    }
    

    然后,一旦我将输出添加到“EmailTempHolder”的实例中,我就可以使用将它们传递到 foreach 的项目中

    @activity('Craig_TestingForEach').output.Emails
    

    我希望这可以帮助发现自己处于类似情况的其他人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-17
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多