C# 如何读取azure http触发函数中JSON响应的属性?
我有下面的代码,下面的Json示例在requestBody中返回。我想检查我的requestBody是否包含key ComputerModel,如果它包含我想得到的值。我该怎么做 我在QuickWatch中得到的Json响应:(requestBody) C#代码: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
公共静态异步任务运行(
[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>());