0

我收到了来自 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());


    }
4

3 回答 3

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);
    }
}
于 2012-11-27T15:38:33.927 回答
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/

谢谢,

于 2012-11-27T15:40:20.300 回答
0

下面的示例应该对您有所帮助,其中“结果”是返回的 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
                }
            }
        }
于 2015-04-26T13:23:11.363 回答