2013-01-06 80 views
0

我無法使用內置的iOS JSON解析器解析Twitter搜索結果。如何使用UITableView中的iOS NSJSONSerialization解析Twitter搜索結果?

NSDictionary *resultorig = [NSJSONSerialization JSONObjectWithData:self.responseData options: NSJSONReadingMutableContainers error: &err]; 
NSMutableArray *result = [resultorig objectForKey:@"results"]; 
NSLog(@"%@", result); 

我與這個網址搜索Twitter的:其中http://search.twitter.com/search.json?q=%23xbox

打印出:

{"completed_in":0.013,"max_id":288030748135530498,"max_id_str":"288030748135530498","next_page":"?page=2&max_id=288030748135530498&q=%23xbox","page":1,"query":"%23xbox","refresh_url":"?since_id=288030748135530498&q=%23xbox","results":[{"created_at":"Sun, 06 Jan 2013 21:14:16 +0000","from_user":"momarkmagic","from_user_id":41954598,"from_user_id_str":"41954598","from_user_name":"Mark Molnar","geo":null,"id":288030748135530498,"id_str":"288030748135530498","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/342500438\/avat_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/342500438\/avat_normal.jpg","source":"<a href="http:\/\/twitter.com\/">web<\/a>","text":"RT @conceptartworld: Check out Halo 4 Concept Art by Thomas Scholes! http:\/\/t.co\/JdDr40XM #xbox #illustration http:\/\/t.co\/AKjZGKgN","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:14:07 +0000","from_user":"DeJesusRaymond","from_user_id":57501625,"from_user_id_str":"57501625","from_user_name":"Raymond DeJesus\u0950","geo":null,"id":288030711229861888,"id_str":"288030711229861888","iso_language_code":"da","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3069994571\/4b2761d7571bbf7efd47c71eb2_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3069994571\/4b2761d7571bbf7efd47c71eb2_normal.jpeg","source":"<a href="http:\/\/instagr.am">Instagram<\/a>","text":"#360 #xbox #swag #thuglife. http:\/\/t.co\/Q0mteFMA","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:13:59 +0000","from_user":"ShotzLiam_3","from_user_id":598301611,"from_user_id_str":"598301611","from_user_name":"Liam","geo":null,"id":288030679453798400,"id_str":"288030679453798400","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2866443960\/9c7349d8672774cae56aedfcc1955b31_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2866443960\/9c7349d8672774cae56aedfcc1955b31_normal.jpeg","source":"<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>","text":"@FifaaGiveaways can I have some coins #xbox","to_user":"FifaaGiveaways","to_user_id":943979888,"to_user_id_str":"943979888","to_user_name":"Free UT Giveaways"},{"created_at":"Sun, 06 Jan 2013 21:13:28 +0000","from_user":"Kuvaga","from_user_id":83686315,"from_user_id_str":"83686315","from_user_name":"Kut V. \u26a1","geo":null,"id":288030544850206720,"id_str":"288030544850206720","iso_language_code":"es","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3060318139\/af19b6a35cdf09e4f54e12835e18093e_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3060318139\/af19b6a35cdf09e4f54e12835e18093e_normal.jpeg","source":"<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>","text":"Este es el que te dije @GarcIA_MGM #Xbox http:\/\/t.co\/04N9fESH","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:13:24 +0000","from_user":"benzybk","from_user_id":275588581,"from_user_id_str":"275588581","from_user_name":"Benzy Babykutty","geo":null,"id":288030531063541762,"id_str":"288030531063541762","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3040249039\/d741b8ccfdb9d130be72eadd77471adc_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3040249039\/d741b8ccfdb9d130be72eadd77471adc_normal.jpeg","source":"<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>","text":"RT @TheSunNewspaper: The next Xbox versus the PS4, we take a look at what to expect. http:\/\/t.co\/SdFzZUYv #xbox #ps3 #gaming","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:13:13 +0000","from_user":"Lewis_Whitfield","from_user_id":53468672,"from_user_id_str":"53468672","from_user_name":"ImLatchingOntoYou.","geo":null,"id":288030482623516672,"id_str":"288030482623516672","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3008431805\/15b78d1e299047711e5ab6da0cbe3e28_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3008431805\/15b78d1e299047711e5ab6da0cbe3e28_normal.jpeg","source":"<a href="http:\/\/instagr.am">Instagram<\/a>","text":"Completed Forza Horizon! Yay #xbox #xbox360 #forza #completed #sad #intense #best #game #ever http:\/\/t.co\/AedVwph0","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:12:51 +0000","from_user":"sexyboy529","from_user_id":394412198,"from_user_id_str":"394412198","from_user_name":"Sexyboy","geo":null,"id":288030392844435456,"id_str":"288030392844435456","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_5_normal.png","source":"<a href="http:\/\/twitter.com\/">web<\/a>","text":"RT @Sam_James96: My life is dedicated to xbox today. #xbox #GTA5","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:12:28 +0000","from_user":"Andreact93","from_user_id":211217957,"from_user_id_str":"211217957","from_user_name":"Andrea Gazzo","geo":null,"id":288030296312537090,"id_str":"288030296312537090","iso_language_code":"da","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1771937572\/foto_twitter_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1771937572\/foto_twitter_normal.jpg","source":"<a href="http:\/\/instagr.am">Instagram<\/a>","text":"#xbox360 #controller #game #halo4 #games #gamers #xbox #modded #led #blue http:\/\/t.co\/bTkCuyT0","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:12:24 +0000","from_user":"2xMolly2xBlunt","from_user_id":259448291,"from_user_id_str":"259448291","from_user_name":"\u2665Rihanna\u2665BabyDaddy\u2665\ue420","geo":null,"id":288030277299736577,"id_str":"288030277299736577","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2956632635\/442f652a4e993f26d285e80ccb57910a_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2956632635\/442f652a4e993f26d285e80ccb57910a_normal.png","source":"<a href="http:\/\/twitter.com\/">web<\/a>","text":"Time to play 2k who wanna play #RT #2K13 #XBOX","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:12:23 +0000","from_user":"_kdog","from_user_id":118113755,"from_user_id_str":"118113755","from_user_name":"Kirsten Thomson","geo":null,"id":288030276670611458,"id_str":"288030276670611458","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3061762292\/c8d1047d30ab44a6ee922500bce85370_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3061762292\/c8d1047d30ab44a6ee922500bce85370_normal.jpeg","source":"<a href="http:\/\/instagr.am">Instagram<\/a>","text":"I love skyrim so much. #skyrim #Lynda #Clyde #ilovewater #xbox #sarahando http:\/\/t.co\/bM2dSIkZ","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:12:10 +0000","from_user":"ReeceAxten","from_user_id":405803362,"from_user_id_str":"405803362","from_user_name":"ReeceAxten\u00ae","geo":null,"id":288030220164952064,"id_str":"288030220164952064","iso_language_code":"tl","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3074248109\/0fa728912afd324e8722169c4efc3ab2_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3074248109\/0fa728912afd324e8722169c4efc3ab2_normal.jpeg","source":"<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>","text":"Fifa anyone? #xbox","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:11:02 +0000","from_user":"karlheath6","from_user_id":984240522,"from_user_id_str":"984240522","from_user_name":"Karl heath","geo":null,"id":288029933144518657,"id_str":"288029933144518657","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3007892972\/4988eca8a918c2fa1b28b48d0f0980df_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3007892972\/4988eca8a918c2fa1b28b48d0f0980df_normal.jpeg","source":"<a href="https:\/\/mobile.twitter.com">Mobile Web (M2)<\/a>","text":"RT @Retroshock316: For a chance 2 win #DirtShowdown for #Xbox, follow @Retroshock316 + RT this. Winner announced when we hit 2k followers. #Comp #Competition","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:10:45 +0000","from_user":"SWARNERx","from_user_id":244070634,"from_user_id_str":"244070634","from_user_name":"- Shell Warner\u2717","geo":null,"id":288029861786820609,"id_str":"288029861786820609","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3071322789\/ba7c82da179f851fea6a4a12ad66c0bd_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3071322789\/ba7c82da179f851fea6a4a12ad66c0bd_normal.jpeg","source":"<a href="http:\/\/twitter.com\/">web<\/a>","text":"back to #xbox .#Blackops2 add me : SWARNERx . #Zombies.","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:10:26 +0000","from_user":"headshotcola","from_user_id":1064288336,"from_user_id_str":"1064288336","from_user_name":"Xbox_Headshotcola","geo":null,"id":288029783584022528,"id_str":"288029783584022528","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/sticky\/default_profile_images\/default_profile_6_normal.png","profile_image_url_https":"https:\/\/si0.twimg.com\/sticky\/default_profile_images\/default_profile_6_normal.png","source":"<a href="http:\/\/twitter.com\/download\/android">Twitter for Android<\/a>","text":"People buy #ForzaHorizon it is such a good game best racing game you would #xbox","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null},{"created_at":"Sun, 06 Jan 2013 21:10:15 +0000","from_user":"joecurry281186","from_user_id":338231824,"from_user_id_str":"338231824","from_user_name":"Joe Curry","geo":{"coordinates":[52.092676,-1.836255],"type":"Point"},"id":288029737761263616,"id_str":"288029737761263616","iso_language_code":"en","metadata":{"result_type":"recent"},"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2402359791\/image_normal.jpg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2402359791\/image_normal.jpg","source":"<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>","text":"Just deleted a load of content to install FableIII and its still running like crap #xbox #ffs","to_user":null,"to_user_id":0,"to_user_id_str":"0","to_user_name":null}],"results_per_page":15,"since_id":0,"since_id_str":"0"} 

我「米試圖顯示tableview中的每一行中的鳴叫文本,但它與我目前的代碼崩潰:

NSDictionary *aTweet = [result objectAtIndex:indexPath.row]; 
cell.theTweet.text = [aTweet objectForKey:@"text"]; 
NSLog(@"%@", [aTweet objectForKey:@"text"]); 

我做錯了什麼?任何幫助將是應用程序因爲我花了將近一整天的時間來解決這個問題。謝謝。

+0

它是如何崩潰?它看起來像JSON返回中的「結果」不是一個字符串,而是一串字符串。你正在用一堆數組加載結果數組 – Siriss

+0

嗨,是的。我認爲問題在於解析樹。 IDK的。謝謝 – 0SX

回答

0

我終於明白了。它在解析樹中。我解析它不正確。我需要按如下方式遍歷樹:

for (NSDictionary *newDictionary in result) { 
NSString *tweetNew = [newDictionary objectForKey:@"text"]; 
} 
0

您正在獲取的JSON響應是有效的。所以在通常情況下,解析它應該沒有任何問題。

就我個人而言,我是JSON解析的SBJson粉絲。請參閱此鏈接

http://stig.github.com/json-framework/ 

它很好,如果您可以將未來數據映射到模型類。要將數據映射到模型類,您可以使用任何KVC包裝器。

希望這會有所幫助。