0

我在使用内置 iOS JSON 解析器解析 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\/4b2761d7571bb012354f7efd47c71eb2_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3069994571\/4b2761d7571bb012354f7efd47c71eb2_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"]);

我究竟做错了什么?任何帮助将不胜感激,因为我几乎整天都在尝试修复此崩溃。谢谢。

4

2 回答 2

0

我终于想通了。它在树的解析中。我解析不正确。我需要按如下方式遍历树:

for (NSDictionary *newDictionary in result) {
 NSString *tweetNew = [newDictionary objectForKey:@"text"];
}
于 2013-01-06T23:26:00.963 回答
0

您获得的 JSON 响应是有效的。所以在通常情况下,解析它应该没有任何问题。

就我个人而言,我是 SBJson 用于 JSON 解析的粉丝。请参考这个链接

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

如果您可以将传入的数据映射到模型类,那就太好了。要将数据映射到模型类,您可以使用任何 KVC 包装器。

希望这可以帮助。

于 2013-01-07T09:54:43.313 回答