C# 将电子邮件正文转换为my logic应用程序azure函数中的JSON对象

C# 将电子邮件正文转换为my logic应用程序azure函数中的JSON对象,c#,azure,azure-functions,azure-logic-apps,C#,Azure,Azure Functions,Azure Logic Apps,我有一个逻辑应用程序,谁的触发器是在接收电子邮件。它将我的电子邮件正文传递给azure函数。然后,我的函数将电子邮件的内容转换为json对象,供我的逻辑应用程序的其余部分使用 目前,如果我在azure函数中硬编码JSON对象的输出,那么所有步骤都可以完成。但是,当试图读取电子邮件正文数据并将其作为json对象返回时,它会出错,错误为500 下面是我函数的代码 public static async Task<HttpResponseMessage> Run(HttpRequest

我有一个逻辑应用程序,谁的触发器是在接收电子邮件。它将我的电子邮件正文传递给azure函数。然后,我的函数将电子邮件的内容转换为json对象,供我的逻辑应用程序的其余部分使用

目前,如果我在azure函数中硬编码JSON对象的输出,那么所有步骤都可以完成。但是,当试图读取电子邮件正文数据并将其作为json对象返回时,它会出错,错误为500

下面是我函数的代码

public static async Task<HttpResponseMessage> Run(HttpRequest req, ILogger log)
{

log.LogInformation("C# HTTP trigger function processed a request.");

string Name = req.Query["Name"];
string PhoneNumber = req.Query["PhoneNumber"];
string SSN = req.Query["SSN"];
string Email = req.Query["Email"];

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
Name = Name ?? data?.Name;
PhoneNumber = PhoneNumber ?? data?.PhoneNumber;
SSN = SSN ?? data?.SSN;
Email = Email ?? data?.Email;

var myObj = new {name = Name, phone = PhoneNumber, ssn = SSN, email = Email};
var jsonToReturn = JsonConvert.SerializeObject(myObj);

return new HttpResponseMessage(HttpStatusCode.OK) {
    Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
};

“新邮件到达时”触发器的正文格式导致的问题,我们可以看到正文显示如下:

"Name": "LXXXXX ZXXXXXXXX",
"PhoneNumber": "5XXXXXXXXX",
"SSN": "1XXX",
"Email": "test@test.com"

它不是json数据,因此当您将其发送到函数时,它将失败

因此,如果要成功运行函数,我们需要为函数提供格式良好的数据。如果您可以决定电子邮件的格式,请将其修改为以下格式:

"Name": "LXXXXX ZXXXXXXXX",
"PhoneNumber": "5XXXXXXXXX",
"SSN": "1XXX",
"Email": "test@test.com"
然后使用操作从电子邮件触发器中删除正文中的html标记。

然后,在数据的开头和结尾添加
{
}
。并解析json数据


现在,您可以使用parse json中的正文作为函数的输入。

您的“示例邮件正文”不是格式良好的json。将其上载到,您将看到许多错误。您将无法使用JSON序列化程序(如JSON.NET.Hi Lajos)反序列化这样的
requestBody
,请问该解决方案能否解决您的问题?是的,他的解决方案帮助您解决了问题this@LajosZadravecz由于解决方案有效,请您将我的回答标记为“已接受”,谢谢~