首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雅虎天气api解析

雅虎天气api解析
EN

Stack Overflow用户
提问于 2012-09-11 22:06:34
回答 1查看 1.8K关注 0票数 0

如何解析从链接http://weather.yahooapis.com/forecastjson?w=2502265接收到的以下JSON的wind。我从其中获取了一个无用的值,但正确地获取了其余的值。有没有人能告诉我怎样才能得到风速?

代码语言:javascript
复制
{"units":{"temperature":"F","speed":"mph","distance":"mi","pressure":"in"},"location":{"location_id":"USCA1116","city":"Sunnyvale","state_abbreviation":"CA","country_abbreviation":"US","elevation":82,"latitude":37.39,"longitude":-122.03},"wind":{"speed":0,"direction":"CALM"},"atmosphere":{"humidity":"86","visibility":"10","pressure":"30.21","rising":"falling"},"url":"http:\/\/weather.yahoo.com\/forecast\/USCA1116.html","logo":"http:\/\/l.yimg.com\/a\/i\/us\/nt\/ma\/ma_nws-we_1.gif","astronomy":{"sunrise":"06:27","sunset":"18:11"},"condition":{"text":"Fair","code":"33","image":"http:\/\/l.yimg.com\/a\/i\/us\/we\/52\/33.gif","temperature":49},"forecast":[{"day":"Today","condition":"PM Showers","high_temperature":"64","low_temperature":"47"},{"day":"Tomorrow","condition":"Partly Cloudy","high_temperature":"62","low_temperature":"45"}]}



NSString *linkForWoeid = [NSString stringWithFormat:@"http://where.yahooapis.com/geocode?location=%@,%@&flags=J&gflags=R&appid=zHgnBS4m",latitude,longitude];
         NSURL *woeid = [NSURL URLWithString:linkForWoeid];
         NSData *WoeidData = [NSData dataWithContentsOfURL:woeid];
         if (WoeidData != NULL)
         {
             NSError *woeiderr = nil;
             //NSLog(@"linkForWoeid:%@woeid:%@woeidData:%@",linkForWoeid,woeid,WoeidData);
             NSDictionary *response1=[NSJSONSerialization JSONObjectWithData:WoeidData options:NSJSONReadingMutableContainers error:&woeiderr]; 
             NSDictionary *woeidDict = [[[[response1 objectForKey:@"ResultSet"]objectForKey:@"Results"]objectAtIndex:0]objectForKey:@"woeid"];

             NSString *address=[NSString stringWithFormat:@"http://weather.yahooapis.com/forecastjson?w=%@",woeidDict];
             NSURL *url=[NSURL URLWithString:address];
             NSData *data=[NSData dataWithContentsOfURL:url];
             NSError *eqw=nil;
             if (data != NULL)
             {
                 NSDictionary *response=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&eqw]; 
                 //NSLog(@"response:%@",response);

                 NSString *highTempDict = [[[response objectForKey:@"forecast"]objectAtIndex:0] objectForKey:@"high_temperature"];
                 NSString *temp = [highTempDict stringByAppendingFormat:@" 'F"];
                          NSString *windSpeed = [[response objectForKey:@"wind"] objectForKey:@"speed"];
                          NSLog(@"wind :%@",windSpeed);
                          if (windSpeed == 0)
                          {
                              NSLog(@"insideif");
                          windSpeed = @"0";
                          }

                 NSString *imageView = [[response objectForKey:@"condition"]objectForKey:@"image" ];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 22:37:08

嗨,拉西,请在这里用NSNumber代替NSString

代码语言:javascript
复制
NSNumber *windSpeed = [[response objectForKey:@"wind"] objectForKey:@"speed"];

与在JSON中一样,它是整数值(不带引号),所以它不是NSString,而是NSNumber

你可以将它的字符串值设置为[windSpeed stringValue];

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12371598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档