C# 如何读取azure http触发函数中JSON响应的属性?

C# 如何读取azure http触发函数中JSON响应的属性?,c#,azure-functions,C#,Azure Functions,我有下面的代码,下面的Json示例在requestBody中返回。我想检查我的requestBody是否包含key ComputerModel,如果它包含我想得到的值。我该怎么做 我在QuickWatch中得到的Json响应:(requestBody) C#代码: 公共静态异步任务运行( [HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)] HttpRequest请求,ILogger日志) { string requ

我有下面的代码,下面的Json示例在requestBody中返回。我想检查我的requestBody是否包含key ComputerModel,如果它包含我想得到的值。我该怎么做

我在QuickWatch中得到的Json响应:(requestBody)

C#代码:

公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]
HttpRequest请求,ILogger日志)
{
string requestBody=等待新的StreamReader(req.Body).ReadToEndAsync();
字符串computermodel=req.Query[“computermodel”];//我在这里什么都没有得到
string responseMessage=string.IsNullOrEmpty(计算机模型)
?“此HTTP触发的函数已成功执行。请在查询字符串或请求正文中为个性化响应传递名称。”
:$“您好,{name}。此HTTP触发的函数已成功执行。”;
返回新的OkObjectResult(responseMessage);
}

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

{
     "id": "Test", 
     "Type": "Test", 
     "ComputerModel": "Testings",   
     "Properties": {
                        "Access": "CUSTOMER" 
                    }
}
使用上面的Json,您可以使用
JObject
解析它
req.Query
提供了查询字符串参数,但您的json作为post正文发布

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

BTW
{{…}}
不是JSON。JSON字符串可以包含数组或字典,而字典是使用单个括号指定的。如果遇到
{{
}
,所有JSON库都将抛出错误。使用有效的JSON负载,您可以使用
public ActionResult PostRun(Computer Computer){…}
创建一个MVC或Web API操作,框架将JSON字符串反序列化为
Computer
实例事实上,如果您只需在文档中尝试
入门
教程,就可以避免当前的问题。但是无论Azure函数中使用了什么
HttpTrigger
{{..}}
都不是JSON。不要指望别人猜你在做什么。文档解释了这一点,示例显示了使用JSON将有效负载自动解析为JObject。NET@AnkitKumar正如@PanagiotisKanavos所提到的,您的JSON不正确。它应该类似于
{“id”:“Test”,“Type”:“Test”,“ComputerModel”:“Testings”,“Properties”:{“Access”:“CUSTOMER”}
。您可以使用newtsonsoft包转换为特定类型或解析为JObject,并从
JObject
读取值,如果您注意到它在每个属性后面都有一个
{
。一旦您有了上面提到的正确Json,您就可以这样做
var JObject=JObject.parse(requestBody);
var computerModel=jObject[“computerModel”].ToObject();
{
     "id": "Test", 
     "Type": "Test", 
     "ComputerModel": "Testings",   
     "Properties": {
                        "Access": "CUSTOMER" 
                    }
}
 var jObject = JObject.Parse(requestBody );
 Console.WriteLine(jObject["ComputerModel"].ToObject<string>());