如何解决如何从Dictionary <string,dynamic>Json DeserializeObject获取数据
我已经使用Newtonsoft对动态Json进行了反序列化。 JSON是复杂且动态的。
{
"last_updated": " ","regions": {
"antarctica": {
"name": "Antarctica","totals": [],"list": [
"aq","bv","gs","tf","hm"
]
},"world": {
"name" : "","totals": {
"confirmed": 250566,"daily_confirmed": 0,"recovered": 202098,"deaths": 35205,"daily_deaths": 0,"critical": 676,"tests": 7249844
},"list": [
{
"country": "Italy","country_code": "it","state": "Lombardy","confirmed": 85775,"deaths": 15662,"critical": 231,"recovered": 231,"tests": 43442,"daily_confirmed": -1,"daily_deaths": -1
},and so on ..
为克服数据类型问题,我使用了动态对象
[JsonTypedExtensionData]
public Dictionary<string,dynamic> items { get; set; }
至此效果很好。现在,我试图从此动态词典中获取数据
var report = await GetCountryReport();
Dictionary<string,dynamic> Dict = report.regions.results["world"].items;
我正在获取数据作为Dict Count(2)
[0] = {[list,{[ {"country": "Italy","confirmed": 4149,"deaths": 55,"recovered": 2916,"Incidence_Rate": "54.408517127144925","Case-Fatality_Ratio": "1.274822260357931","last_updated": "2020-08-10T22:30:32Z","...
[1] = {[totals,{{"confirmed": 20218306,"recovered": 12814226,"deaths": 737481,"critical": 64743,"tests": 370260493}}]}
如何从字典中获取每个元素的值,例如“ values.list.country”等??
解决方法
您可以按照以下方式进行操作:
var list = Dict.Where(x => x.Key == "list").Select(x => x.Value).SingleOrDefault();
var data = ((JArray)list).Select(x => new
{
country = (string)x["country"],state = (string)x["state"],confirmed = (int)x["confirmed"]
//...other properties in list
}).ToList();
数据结构如下:
然后,您可以使用foreach循环获取指定值:
foreach(var x in data)
{
var country = x.country;
var state = x.state;
var confirmed = x.confirmed;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。