在作为 JSON 传递给 Azure 逻辑应用程序的列表 <Object> 中显示具有值的项目

Display Items with value in a List<Object> passed as JSON to an Azure Logic App

我有一些代码可以从页面收集信息。页面上的使用可以 select 下拉列表中的项目并将它们添加为要求。假设某人需要一个笔记本,一些铅笔,也许还有一些椅子(这个想法是他们可以添加的项目列表是从另一个服务动态生成的,所以列表可以是 expanded/contracted 所以我不知道列表可能包含什么或多长时间)。我将其保存在一个列表中,其中对象具有一个 ItemName(字符串)和一个 ItemQuantity(整数)属性.

    public class IndividualItem
    {
        public string ItemName { get; set; }
        public int ItemQuantity { get; set; }
        public IndividualItem()
        {
        }
        public IndividualItem(string itemName, int itemQuantity)
        {
            ItemName = itemName;
            ItemQuantity = itemQuantity;
        }
    }

这将被解析为 JSON 并发送到 Azure 逻辑应用程序,并且需要使用此信息发送电子邮件。到达逻辑应用程序的 JSON 如下所示:

Item Requirements: [
    {"ItemName":"Pencil","ItemQuantity":13},
    {"ItemName":"Xacto Knife","ItemQuantity":10},
    {"ItemName":"Colored Pencils","ItemQuantity":44}
]

现在将此信息添加到电子邮件中时就会出现问题。在 Azure 逻辑应用程序中,我知道我可以访问动态传递的信息。因此,我可以访问 'To' 字段,例如填充电子邮件应该去的地方。我可以访问 'Subject' 和 'Footer' 或我需要的任何其他部分。 但是,当访问我的 'MeetingItems' 列表并将其添加进去时,文本显示方括号等(实际的 JSON 字符串)。

我的问题是,如何清理字符串列表的内容以删除它并添加自定义格式。因此,将 [{""....}] 上面的列表转换为一个无序列表,每个项目一个在另一个下面:

发送的完整 JSON 字符串示例如下。这需要填充一个“发送电子邮件”操作,我知道我可以通过动态命名约定访问这些字段(因此来自一个字段或其他)。但是执行相同的操作并调用 ItemList 将在文本中保留 [{...}] 格式。我知道您可以执行 For Each 来访问单个项目,但是您如何将其与发送电子邮件操作联系起来?如果您嵌套发送电子邮件操作,您显然会为列表中的每个项目调用一次。

{
    "From": "NO REPLY",
    "To": "target@email.com",
    "CC": "cc@email.com",
    "Subject": "Email Subject",
    "EmailBody": {
        "Introduction": "This email has been issued to inform you of an order",
        "OrderDetails": {
            "OrderName": "Refill",
            "OrderDate": "24/09/2020, 09:00",
            "ExpectedDeliveryDate": "29/09/2020, 09:00",
            "Location": "Address",
            "ConfirmationRequired": "Yes",
            "ShippingDetails": "Yes",
            "ItemList": [
                {
                    "ItemName": "Pencil",
                    "ItemQuantity": 13
                },
                {
                    "ItemName": "Xacto Knife",
                    "ItemQuantity": 10
                },
                {
                    "ItemName": "Colored Pencils",
                    "ItemQuantity": 44
                }
            ]
        },
        "Footer": "Please email sender for additional details"
    }
}

----> 我有一个“部分”解决方案,方法是将输入编辑到列表中以保存传递的格式化字符串。但是,我想保持打开状态,看看除了硬编码我发送的字符串之外是否还有其他方法。

{
    "From": "NO REPLY",
    "To": "target@email.com",
    "CC": "cc@email.com",
    "Subject": "Email Subject",
    "EmailBody": {
        "Introduction": "This email has been issued to inform you of an order",
        "OrderDetails": {
            "OrderName": "Refill",
            "OrderDate": "24/09/2020, 09:00",
            "ExpectedDeliveryDate": "29/09/2020, 09:00",
            "Location": "Address",
            "ConfirmationRequired": "Yes",
            "ShippingDetails": "Yes",
            "ItemList": "<ul><li><b>Pencil</b> - 13</li><li><b>Xacto Knife</b> - 10</li><li><b>Colored Pencils</b> - 44</li></ul>"
        },
        "Footer": "Please email sender for additional details"
    }
}

我假设您正在执行 PARSE JSON 操作以将上述字符串转换回 JSON。

据我所知,一旦它被解析,您仍然使用以下格式的 ItemList:

现在,为了满足您在电子邮件中作为列表包含的要求,您可以创建 HTML Table,并使用从 Parse JSON 步骤获得的 ItemList 输出。

下面是输出:

如果您不想要 headers,您可以在列部分 创建 HTML Table 步骤中选择自定义。选择值。

您可以将 HTML table 的输出包含到电子邮件的 body 中。

邮件输出: