我通过调用外部 API 获取 JSON 结果。
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
return "Success";
}
else
{
return "Fail";
}
结果一致var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
我得到的是这样的:
{{
"query": "1",
"topScoringIntent": {
"intent": "1",
"score": 0.9978111,
"actions": [
{
"triggered": false,
"name": "1",
"parameters": []
}
]
},
"entities": [],
"dialog": {
"prompt": "1",
"parameterName": "1",
"parameterType": "1::1",
"contextId": "11",
"status": "1"
}
}}
我在用HttpClient
。我在访问时遇到困难prompt
核心价值。我想要得到prompt
from dialog
。我怎么才能得到它?
我想到了三种方法。
-
假设json是一致的并且响应的结构不会经常改变,我会使用像json2csharp http://json2csharp.com/ or jsonutils http://jsonutils.com/创建 C# 类。
然后调用:
{GeneratedClass} obj = JsonConvert.DeserializeObject<{GeneratedClass}>(result);
这将为您提供一个可以使用的强类型对象。
-
您可以跳过类生成并使用动态对象:
dynamic obj = JsonConvert.DeserializeObject<dynamic>(result)
并访问属性,例如:
obj.dialog.prompt;
-
您可以使用 JObject 并使用字符串访问其属性
JObject obj = JsonConvert.DeserializeObject(result);
obj["dialog"]["prompt"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)