如何在C#中解析Twitter搜索JSON响应?

时间:2012-11-27 15:30:45

标签: c# json twitter

我从Twitter搜索收到JSON响应但是我如何循环它们?

 protected void BtnSearchClick(object sender, EventArgs e)
    {         
        StringBuilder sb = new StringBuilder();
        byte[] buf = new byte[8192];
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://search.twitter.com/search.json?&q=felipe&rpp=40");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Stream resStream = response.GetResponseStream();

        string tempString = null;
        int count = 0;
        do
        {
            count = resStream.Read(buf, 0, buf.Length);// fill the buffer with data

            if (count != 0)// make sure we read some data
            {
                tempString = Encoding.ASCII.GetString(buf, 0, count);// translate from bytes to ASCII text

                sb.Append(tempString);// continue building the string
            }
        }
        while (count > 0); // any more data to read?

        //HttpContext.Current.Response.Write(sb.ToString()); //I can see my JSON response here
        //object deserializeObject = Newtonsoft.Json.JsonConvert.SerializeObject(sb.ToString());


    }

3 个答案:

答案 0 :(得分:9)

我会使用dynamic关键字

using (WebClient wc = new WebClient())
{

    var json = wc.DownloadString("http://search.twitter.com/search.json?&q=felipe&rpp=40");
    dynamic obj = JsonConvert.DeserializeObject(json);
    foreach (var result in obj.results)
    {
        Console.WriteLine("{0} - {1}:\n{2}\n\n", result.from_user_name, 
                                                 (DateTime)result.created_at, 
                                                 result.text);
    }
}

答案 1 :(得分:1)

强烈打字的方式..

public class MyTwitterClass
{

    public List<CustomObject> data {get; set;}
}

public class CustomObject 
{

    public string id {get; set;}
    public string name {get; set;}
}

然后你应该能够做到:

string someJson=
    @"{""data"":[{""id"":""1"",""name"":""name1""}, {""id"":""2"",""name"":""name2""}]}";

MyTwitterClass someTwitterData = new JavaScriptSerializer().Deserialize<MyTwitterClass>(someJson);

foreach(var item in someTwitterData.data)
{
  Console.Write(item.id + " " + item.name);
}

说了所有你想要查看的内容

http://linqtotwitter.codeplex.com/

谢谢,

答案 2 :(得分:0)

以下示例可以帮助您,其中“result”是返回的JSON

        dynamic stuff = JsonConvert.DeserializeObject(result);

        foreach (JObject item in stuff)
        {
            foreach (JProperty trend in item["user"])
            {
                if (trend.Name == "name")
                {
                    MessageBox.Show(trend.Value.ToString());

                }
                else if (trend.Name == "followers_count")
                {
                    // GET COUNT
                }
                else if (trend.Name == "profile_image_url")
                {
                    // GET PROFILE URL
                }
            }
        }