从推文中解析JSON

时间:2013-02-04 14:41:48

标签: c# json api twitter json.net

我试图使用JObject从Twitter解析C#中的JSON对象我似乎无法弄清楚我需要的结果的起点。例如:

我需要得到以下内容:

  • 头像网址
  • Twitter名称
  • 消息

JSON字符串如下所示:

  

{ “completed_in”:0.01, “max_id”:297026363595042816 “max_id_str”: “297026363595042816”, “网页”:1, “查询”: “UOL01”, “refresh_url”?:“since_id = 297026363595042816&安培; Q = O1“,”结果“:[{”created_at“:”星期四,2013年1月31日16:59:38 +0000“,”from_user“:”CarrieLouiseH“,”from_user_id“:252240491,”from_user_id_str“:”252240491“, “from_user_name”:“Carrie Haworth”,“geo”:null,“id”:297026363595042816,“id_str”:“297026363595042816”,“iso_language_code”:“nl”,“metadata”:{“result_type”:“recent”} “profile_image_url”: “http://a0.twimg.com/profile_images/1721499350/5680_216695890261_521090261_7945528_588811_n_normal.jpg”, “profile_image_url_https”: “https://si0.twimg.com/profile_images/1721499350/5680_216695890261_521090261_7945528_588811_n_normal.jpg”,” source“:”< a href =“http://twitter.com/”> web< / a>“,”text“:”Test#01“,”to_user“:null,”to_user_id“:0, “to_user_id_str”: “0”, “to_user_name”:空}], “results_per_page”:15, “since_id”:0 “since_id_str”: “0”}

我的假设是,如果我从“结果”开始,那么我可以访问“from_user”等。这是我的代码(到目前为止):

void DownloadStringCompleted(object senders, DownloadStringCompletedEventArgs e)
    {
        try
        {
            List<TwitterItem> contentList = new List<TwitterItem>();

            JObject ja = JObject.Parse(e.Result);
            int count = 0;

            JToken jUser = ja["results"];

            var name2 = (string)jUser["from_user_name"];
        }catch(Exception e){
         MessageBox.Show("There was an error");
        }
    }

但这似乎只是抓住了例外。任何人对我出错的地方都有任何想法吗?

1 个答案:

答案 0 :(得分:1)

您拥有的JSON不正确 - 应该转义元素结果[0] [“source”]的"

...,"source":"<a href=\"http://twitter.com/\">web</a>","...

此外,ja["results"]是一个数组。您不能使用字符串索引器来获取其元素。首先需要在期望的索引上获取元素,然后可以访问其from_user_name属性:

JObject ja = JObject.Parse(e.Result);
int count = 0;
JToken jUser = ja["results"][0];
var name2 = (string)jUser["from_user_name"];