【问题标题】:How do I read a property of a JSON response in an azure http triggered function? [closed]如何在 azure http 触发函数中读取 JSON 响应的属性? [关闭]
【发布时间】: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&lt;string&gt;();

标签: c# azure-functions


【解决方案1】:

您的 json 似乎与 cmets 中讨论的不正确。正确的 Json 如下:

{
     "id": "Test", 
     "Type": "Test", 
     "ComputerModel": "Testings",   
     "Properties": {
                        "Access": "CUSTOMER" 
                    }
}

并且使用上面的 Json,您可以使用 JObject 解析它。 req.Query 提供查询字符串参数,但您的 json 发布为帖子正文。

 var jObject = JObject.Parse(requestBody );
 Console.WriteLine(jObject["ComputerModel"].ToObject<string>());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    相关资源
    最近更新 更多