Using NSJSONSerialization to parse JSON

Too many discussions have occurred about this, and yet I cannot figure out how to solve my problem.

Here's the JSON data I get from WorldWeatherOnline. JSON is valid. But I can’t figure out how to disassemble it. This is my code followed by JSON. Please, help!

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"
          }
       ]
    }
 }
+7
source share
1 answer

Your json you analyzed contains a dictionary called data . Inside this dictionary is the current_condition array. Continue through the data structures to find the attributes you need:

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

All Articles