我试图使用JObject
从Twitter解析C#中的JSON对象我似乎无法弄清楚我需要的结果的起点。例如:
我需要得到以下内容:
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");
}
}
但这似乎只是抓住了例外。任何人对我出错的地方都有任何想法吗?
答案 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"];