使用NSJSONSerialization来解析JSON

时间:2012-09-04 00:09:51

标签: iphone ios json

在这方面发生了太多的讨论,但我无法弄清楚如何解决我的问题。

这是我从WorldWeatherOnline获得的JSON数据。 JSON有效。但我无法弄清楚如何解析它。这是我的代码,后面是JSON。请帮忙!

NSError* errorInfo;
NSDictionary *parsedJSON = [NSJSONSerialization JSONObjectWithData:self.wwoWeatherData options:kNilOptions error:&errorInfo];

NSArray* temp = [parsedJSON objectForKey:@"temp_C"];
NSLog(@"%@", temp);
   {
   "data":{
      "current_condition":[
         {
            "cloudcover":"0",
            "humidity":"82",
            "observation_time":"11:07 PM",
            "precipMM":"0.0",
            "pressure":"1024",
            "temp_C":"16",
            "temp_F":"61",
            "visibility":"10",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Clear"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0008_clear_sky_night.png"
               }
            ],
            "winddir16Point":"NNE",
            "winddirDegree":"30",
            "windspeedKmph":"11",
            "windspeedMiles":"7"
         }
      ],
      "request":[
         {
            "query":"Lat 48.85 and Lon 2.35",
            "type":"LatLon"
         }
      ],
      "weather":[
         {
            "date":"2012-09-04",
            "precipMM":"0.0",
            "tempMaxC":"25",
            "tempMaxF":"77",
            "tempMinC":"14",
            "tempMinF":"57",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"N",
            "winddirDegree":"5",
            "winddirection":"N",
            "windspeedKmph":"13",
            "windspeedMiles":"8"
         },
         {
            "date":"2012-09-05",
            "precipMM":"0.0",
            "tempMaxC":"22",
            "tempMaxF":"72",
            "tempMinC":"10",
            "tempMinF":"50",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"NNE",
            "winddirDegree":"25",
            "winddirection":"NNE",
            "windspeedKmph":"20",
            "windspeedMiles":"13"
         },
         {
            "date":"2012-09-06",
            "precipMM":"0.0",
            "tempMaxC":"22",
            "tempMaxF":"71",
            "tempMinC":"11",
            "tempMinF":"51",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"NE",
            "winddirDegree":"42",
            "winddirection":"NE",
            "windspeedKmph":"15",
            "windspeedMiles":"10"
         },
         {
            "date":"2012-09-07",
            "precipMM":"0.0",
            "tempMaxC":"24",
            "tempMaxF":"75",
            "tempMinC":"13",
            "tempMinF":"55",
            "weatherCode":"116",
            "weatherDesc":[
               {
                  "value":"Partly Cloudy"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
               }
            ],
            "winddir16Point":"ENE",
            "winddirDegree":"56",
            "winddirection":"ENE",
            "windspeedKmph":"13",
            "windspeedMiles":"8"
         },
         {
            "date":"2012-09-08",
            "precipMM":"0.0",
            "tempMaxC":"26",
            "tempMaxF":"78",
            "tempMinC":"16",
            "tempMinF":"61",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"ENE",
            "winddirDegree":"76",
            "winddirection":"ENE",
            "windspeedKmph":"9",
            "windspeedMiles":"6"
         }
      ]
   }
}

1 个答案:

答案 0 :(得分:8)

您解析的json包含一个名为data的字典。在该字典中是current_condition的数组。继续向下钻取数据结构以查找您要查找的属性:

NSDictionary *data = [parsedJSON objectForKey:@"data"];
NSArray *currentConditions = [data objectForKey:@"current_condition"];
NSDictionary *condition = [currentConditions objectAtIndex:0];
NSString *tempC = [condition objectForKey:@"temp_C"];