使用ObjectiveC for iOS 6解析世界天气在线JSON

时间:2013-05-04 20:12:07

标签: ios objective-c json parsing

我需要一个建议:我从这个http://www.worldweatheronline.com/free-weather.aspx下载了一个JSON。我发布了解析这个JSON的问题:

{
   "data":{
      "current_condition":[
         {
            "cloudcover":"0",
            "humidity":"57",
            "observation_time":"07:23 PM",
            "precipMM":"0.0",
            "pressure":"1013",
            "temp_C":"23",
            "temp_F":"73",
            "visibility":"10",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Clear"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0008_clear_sky_night.png"
               }
            ],
            "winddir16Point":"W",
            "winddirDegree":"275",
            "windspeedKmph":"0",
            "windspeedMiles":"0"
         }
      ],
      "request":[
         {
            "query":"Roma, Italy",
            "type":"City"
         }
      ],
      "weather":[
         {
            "date":"2013-05-04",
            "precipMM":"0.0",
            "tempMaxC":"26",
            "tempMaxF":"78",
            "tempMinC":"13",
            "tempMinF":"55",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"WSW",
            "winddirDegree":"251",
            "winddirection":"WSW",
            "windspeedKmph":"9",
            "windspeedMiles":"6"
         }
      ]
   }
}

从这个JSON我需要3个信息:tempMaxC,tempMinC和weatherIconUrl - >值。到现在为止我做了这个方法:

- (void)wheaterDidFinish:(NSDictionary*)object {
    if (object) {
        NSDictionary *obj = [object objectForKey:@"data"];
        NSArray *firstZero = [obj objectForKey:@"weather"];
        NSLog(@"%@ e %d", firstZero, firstZero.count);

    }
}

我如何获得我需要的信息?你能帮助我吗? 谢谢

1 个答案:

答案 0 :(得分:2)

-(void)wheaterDidFinish:(NSDictionary*)object 
{
    NSString *tempMaxC=@"" , tempMinC =@"" , weatherIconUrl =@"";

    if (object) 
    {
         NSDictionary *obj = [object objectForKey:@"data"];

         NSArray *firstZero = [obj objectForKey:@"weather"];

         NSMutableDictionary *weatherDict = [firstZero objectAtIndex:0];

         tempMaxc = [NSString stringWithFormat:@"%@",[weatherDict objectForKey:@"tempMaxC"]];

         tempMinC = [NSString stringWithFormat:@"%@",[weatherDict objectForKey:@"tempMinC"]];

         NSArray *weatherIconArray=[weatherDict objectForKey:@"weatherIconUrl"];

         weatherIconUrl = [NSString stringWithFormat:@"%@",[[weatherIconArray objectAtIndex:0] objectForKey:@"value"]];

    }
}

这将解决您的问题