我从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());
}
答案 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
}
}
}