文章内容

2017/11/28 10:51:12,作 者: 黄兵

给定关键字不在字典中

程序运行了一段时间,之后报错了,错误提示如下:

异常详细信息: System.Collections.Generic.KeyNotFoundException: 给定关键字不在字典中。

这个程序主要是每天从知乎获取文章内容,之后在我的网站上显示,突然有一个字段没有,就报上面的错误。

看一下程序源代码:

string url = "https://news-at.zhihu.com/api/4/news/" + ZhihuId;
string GetZhihuCon = await HttpRequest.HttpGetAsync(url, "");

//解析zhihu Json数据
Dictionary<string, object> values = JsonConvert.DeserializeObject<Dictionary<string, object>>(GetZhihuCon);

首先解析远程内容,之后使用Dictionary<k,v>来存储相应字段,如果某个字段远程没有就会报这个错误。

那么我们要做的就是首先判断一下,存在这个字段没有,使用ContainsKey方法:确定是否 Dictionary< TKey, TValue> 包含指定键。

修改源代码如下:

Zhihu_Extend ZhihuExtend = new Zhihu_Extend();
ZhihuExtend.Image_source = values.ContainsKey("image_source") ? values["image_source"].ToString() : null;
ZhihuExtend.ImageUrl = values.ContainsKey("image") ? values["image"].ToString() : null;
ZhihuExtend.Js_Url = values.ContainsKey("js") ? values["js"].ToString() : null;
ZhihuExtend.Css_Url = values.ContainsKey("css") ? values["css"].ToString() : null;
ZhihuExtend.Share_Url = values.ContainsKey("share_url") ? values["share_url"].ToString() : null;

这样问题就解决了。

参考资料:

Dictionary

黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - 给定关键字不在字典中

分享到:

发表评论

评论列表