【发布时间】:2021-01-22 18:19:39
【问题描述】:
我有下面的代码,下面的 Json 示例在 requestBody 中被返回。我想检查我的 requestBody 是否包含键 ComputerModel,如果它包含我想获得该值。我该怎么做?
我在快速观看中得到的 Json 响应:(requestBody)
{
"id": "Test",
"Type": "Test",
"ComputerModel": "Testings"
"Properties": {
"Access": "CUSTOMER"
}
}
C#代码:
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
HttpRequest req, ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
string computermodel= req.Query["ComputerModel"]; // I don't get anything here
string responseMessage = string.IsNullOrEmpty(Computermodel)
? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
: $"Hello, {name}. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
}
【问题讨论】:
-
顺便说一句
{{...}}不是 JSON。 JSON 字符串可以包含数组或字典,并且字典使用单个括号指定。如果遇到{{或}},所有 JSON 库都会抛出错误。使用有效的 JSON 有效负载,您可以使用public ActionResult PostRun(Computer computer){...}创建 MVC 或 Web API 操作,框架会将 JSON 字符串反序列化为Computer实例 -
事实上,如果您只是尝试了文档中的
Getting Started教程,就可以避免当前的问题。但是{{..}}不是 JSON ,无论如何 -
HttpTrigger在 Azure Functions 中使用。不要指望人们猜你在做什么。文档解释了Triggers and binding,示例显示了使用 JSON.NET 将有效负载自动解析为 JObject -
@PanagiotisKanavos 提到的@AnkitKumar,您的 JSON 不正确。它应该类似于
{ "id": "Test", "Type": "Test", "ComputerModel": "Testings", "Properties": {"Access": "CUSTOMER" }}。您可以将 newtsonsoft 包转换为特定类型或解析为 JObject 并从JObject读取值,如果您注意到它有单个{并且在每个属性之后有,。 -
一旦你有上面提到的正确的Json,你就可以这样做
var jObject = JObject.Parse(requestBody);var computerModel = jObject["ComputerModel"].ToObject<string>();
标签: c# azure-functions