使用C#中的JSON.NET反序列化twitter JSON以获取主题标签
也许我正在重复这个问题,但我第一次尝试这个问题,我找不到任何与我的情况完全相同的东西.我在C#编码并使用
JSON.NET反序列化json. json文件来自twitter作为对此GET请求的响应:
https://api.twitter.com/1/statuses/home_timeline.json?include_entities=true json是来自给定用户的twitter时间轴的20条最新推文(json对象)的列表,单个json对象的格式如下所示: { "created_at": "Thu Sep 20 10:25:39 +0000 2012","id": 248729631476314100,"id_str": "248729631476314112","text": "Ask the experts and learn what's new with v.2.2 at at #MongoDBPune (http://t.co/o5BA7zd6) and #MongoDBBangalore (http://t.co/7q3E2MBq)","source": "<a href="http://www.socialrithmic.com" rel="nofollow">Socialrithmic</a>","truncated": false,"in_reply_to_status_id": null,"in_reply_to_status_id_str": null,"in_reply_to_user_id": null,"in_reply_to_user_id_str": null,"in_reply_to_screen_name": null,"user": { "id": 18080585,"id_str": "18080585","name": "mongodb","screen_name": "MongoDB","location": "","url": "http://mongodb.org/","description": "High-performance,open source,schema-free document-oriented database | www.facebook.com/MongoDB","protected": false,"followers_count": 24999,"friends_count": 16,"listed_count": 1582,"created_at": "Fri Dec 12 17:21:18 +0000 2008","favourites_count": 6,"utc_offset": -18000,"time_zone": "Eastern Time (US & Canada)","geo_enabled": true,"verified": false,"statuses_count": 1669,"lang": "en","contributors_enabled": false,"is_translator": false,"profile_background_color": "529747","profile_background_image_url": "http://a0.twimg.com/profile_background_images/619655093/767dji3m3k684nza7w9z.png","profile_background_image_url_https": "https://si0.twimg.com/profile_background_images/619655093/767dji3m3k684nza7w9z.png","profile_background_tile": false,"profile_image_url": "http://a0.twimg.com/profile_images/2452709870/wo2h8r0qy8d5lsxe5lgd_normal.png","profile_image_url_https": "https://si0.twimg.com/profile_images/2452709870/wo2h8r0qy8d5lsxe5lgd_normal.png","profile_link_color": "43B02A","profile_sidebar_border_color": "829D5E","profile_sidebar_fill_color": "99CC33","profile_text_color": "3E4415","profile_use_background_image": true,"default_profile": false,"default_profile_image": false,"following": true,"follow_request_sent": null,"notifications": null },"geo": null,"coordinates": null,"place": null,"contributors": null,"retweet_count": 1,"entities": { "hashtags": [ { "text": "MongoDBPune","indices": [ 55,67 ] },{ "text": "MongoDBBangalore","indices": [ 95,112 ] } ],"urls": [ { "url": "http://t.co/o5BA7zd6","expanded_url": "http://soc.ai/ZV","display_url": "soc.ai/ZV","indices": [ 69,89 ] },{ "url": "http://t.co/7q3E2MBq","expanded_url": "http://soc.ai/ZW","display_url": "soc.ai/ZW","indices": [ 114,134 ] } ],"user_mentions": [] },"favorited": false,"retweeted": false,"possibly_sensitive": false } 我使用此代码获取(反序列化)列表: List<JsonObject> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JsonObject>>(response); ‘response’保存我的json.当我插入一个断点并观察’list’中的json对象时,我发现了这个: { 我打算从所有20个json对象中收集所有主题标签.所以我基本上需要在实体内导航到主题标签到文本.但如上所述,反序列化只是部分的.它没有反序列化任何嵌套的东西. 解决方法
我的妈呀!从
this stackoverflow question得到它.谢谢@ chill182!
这是你如何做到的: ArrayList hashtags = new ArrayList(); JArray jsonDat = JArray.Parse(response); for(int x = 0; x < jsonDat.Count(); x++) { JObject entity = JObject.Parse(jsonDat[x]["entities"].ToString()); JArray arrHashtags = JArray.Parse(entity["hashtags"].ToString()); for(int i=0; i < arrHashtags.Count(); i++) { JObject hashtagstuff = JObject.Parse(arrHashtags[i].ToString()); hashtags.Add(hashtagstuff["text"].ToString()); } } 不要忘记在命名空间中包含Linq (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |