我有下面的方法来解析来自 twitter 搜索的数据,奇怪的是这个方法在我的一种形式中工作正常,但在我的主要形式中它返回异常:
例外:“System.Collections.Generic.Dictonary”不包含“文本”的定义
这两种形式几乎相同,我不明白为什么我不能让代码工作..有人有什么想法吗?
下面是方法:
public static HashSet<string> searchTwitterJson(string searchTerm)
{
HashSet<string> resultsFound = new HashSet<string>();
if (searchTerm != "")
{
string v = searchTerm.Replace("\"", "%22");
string keyword = v.Trim();
string keywordet = HttpUtility.UrlEncode(keyword);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://twitter.com/phoenix_search.phoenix?q=" + keywordet + "&headers[X-Twitter-Polling]=true&headers[X-PHX]=true&since_id=203194965877194752&include_entities=1&include_available_features=1&contributor_details=true&mode=relevance&query_source=unknown");
var response = request.GetResponse();
var reader = new StreamReader(response.GetResponseStream());
var responseString = reader.ReadToEnd();
string limit = response.Headers["X-RateLimit-Remaining"];
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters((new[] { new DynamicJsonConverter() }));
dynamic obj = serializer.Deserialize(responseString, typeof(object)) as dynamic;
foreach (var objects in obj.statuses)
{
if ((objects.text != null) && (objects.user.screen_name != null) && (objects.id_str != null))
{
Match m = Regex.Match(objects.text, @"(http(s)?://)?([\w-]+\.)+[\w-]+(/\S\w[\w- ;,./?%&=]\S*)?");
if (!m.Success)
{
string loggaD = objects.user.screen_name.ToString() + "/" + objects.id_str.ToString();
resultsFound.Add(loggaD);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show("No searchterm");
}
return resultsFound;
}
我收到的部分 JSON:
{
"error": null,
"statuses": [{
"in_reply_to_status_id_str": null,
"id_str": "203239104421445632",
"truncated": false,
"possibly_sensitive": false,
"created_at": "Thu May 17 21:42:33 +0000 2012",
"in_reply_to_user_id_str": null,
"contributors": null,
"favorited": false,
"geo": null,
"user": {
"screen_name": "YouthNorrort"
},
"in_reply_to_screen_name": null,
"coordinates": null,
"retweet_count": 0,
"source": "\u003Ca href=\"http:\/\/www.facebook.com\/twitter\" rel=\"nofollow\"\u003EFacebook\u003C\/a\u003E",
"place": null,
"in_reply_to_status_id": null,
"id": 203239104421445632,
"retweeted": false,
"in_reply_to_user_id": null,
"text": "Hejsan igen!\nvi \u00e4r ledsna att meddela er, men inf\u00f6r imorgon s\u00e5 finns det inga bilar, allts\u00e5 inte heller plats f\u00f6r... http:\/\/t.co\/pMKoOz7o",
"result_category": "recent"
}