加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用C#中的JSON.NET反序列化twitter JSON以获取主题标签

发布时间:2020-12-15 21:40:28 所属栏目:百科 来源:网络整理
导读:也许我正在重复这个问题,但我第一次尝试这个问题,我找不到任何与我的情况完全相同的东西.我在C#编码并使用 JSON.NET反序列化json. json文件来自twitter作为对此GET请求的响应: https://api.twitter.com/1/statuses/home_timeline.json?include_entities=tru
也许我正在重复这个问题,但我第一次尝试这个问题,我找不到任何与我的情况完全相同的东西.我在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对象时,我发现了这个:

{
??“created_at”:“Thu Sep 20 10:25:39 0000 2012”,
??“id”:248729631476314100,
??“id_str”:“248729631476314112”,
??“text”:“在#MongoDBPune(http://t.co/o5BA7zd6)和#MongoDBBangalore(http://t.co/7q3E2MBq)上询问专家并了解v.2.2的新内容”,
??“来源”:“社会化学”,
??“截断”:假,
??“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,
??“用户”:[
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
????[
??????[]
????]
??]
??“geo”:null,
??“coordinates”:null,
??“地方”:null,
??“贡献者”:null,
??“retweet_count”:1,
??“实体”:[
????[
??????[
????????[
??????????[
????????????[]
??????????]
??????????[
????????????[
??????????????[],
??????????????[]
????????????]
??????????]
????????]
????????[
??????????[
????????????[]
??????????]
??????????[
????????????[
??????????????[],
??????????????[]
????????????]
??????????]
????????]
??????]
????]
????[
??????[
????????[
??????????[
????????????[]
??????????]
??????????[
????????????[]
??????????]
??????????[
????????????[]
??????????]
??????????[
????????????[
??????????????[],
??????????????[]
????????????]
??????????]
????????]
????????[
??????????[
????????????[]
??????????]
??????????[
????????????[]
??????????]
??????????[
????????????[]
??????????]
??????????[
????????????[
??????????????[],
??????????????[]
????????????]
??????????]
????????]
??????]
????]
????[
??????[]
????]
??]
??“收藏”:虚假,
??“转推”:虚假,
??“possible_sensitive”:false
}

我打算从所有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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读