微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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对象时,我发现了这个:

{
  “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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐