JSON

2012-09-04 20 views
7

Ayrıştırmak için NSJSONSerialization kullanarak Bu konuda çok fazla tartışma oldu ve sorunumu nasıl çözeceğimi anlayamıyorum.JSON

WorldWeatherOnline'dan aldığım JSON verileri. JSON geçerlidir. Ama nasıl ayrılacağını anlayamıyorum. Bu benim kodum, ardından JSON. Lütfen yardım et! Eğer çözümlenen

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" 
     } 
     ] 
    } 
} 

cevap

8

Kişisel json data adlı bir sözlük içerir. Bu sözlük içinde current_condition dizisidir. Aradığınız öznitelikleri bulmak için veri yapıları üzerinden delme yapmaya devam edin:

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

Şunu yapın: NSLog (@ "% @", currentConditions); sonra current_condition içindeki değerleri gösterir misiniz? Evet ise, o zaman işe yaramıyor. Boş gösteriliyor. –

+0

Üzgünüz, kopya/yapıştır hatasının vardı. ikinci satır, geçerli_koşulları veriden çekmeli, ayrıştırılmamıştır Json – highlycaffeinated

+0

Anlamlıdır. Fakat sorgumu görürseniz, temp_c'yi almaya çalışıyorum. Akım koşullarını yazdırdığımda, current_condition içindeki tüm değerleri verir. Currentconditions dizisi için bir ObjectAtIndex yapmam gerekiyor mu? Eğer öyleyse, dizini gerçekten değiştirmem gerekiyor mu? JSON ve iOS kodlamada yeniyim, lütfen benimle birlikte ol. –