2013-04-18 30 views
1

中的.m 「括號istead」:JSON與 「(」 「)(」 「)」

@implementation ViewController 
    { 
    NSDictionary *_json; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    NSURL* url = [NSURL URLWithString:@"http://api.worldweatheronline.com/free/v1/weather.ashx?q=Si%C3%B3fok&format=json&num_of_days=5&key=mykey"]; 

    NSData *jsonData = [NSData dataWithContentsOfURL:url]; 

    NSError *error; 
    _json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 

    NSDictionary* fullDictFromjson = _json[@"data"]; 

    NSLog(@"%@",fullDictFromjson); 

    NSDictionary* currentCondition = fullDictFromjson[@"current_condition"]; 

    NSLog(@"%@",currentCondition); 

這個我在控制檯得到這個(currentCondition)後:

2013-04-18 22:18:16.758 weather[18111:c07] (
     { 
     cloudcover = 0; 
     humidity = 74; 
     "observation_time" = "08:18 PM"; 
     precipMM = "0.0"; 
     pressure = 1019; 
     "temp_C" = 11; 
     "temp_F" = 51; 
     visibility = 10; 
     weatherCode = 113; 
     weatherDesc =   (
         { 
       value = Clear; 
      } 
     ); 
     weatherIconUrl =   (
         { 
       value = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0008_clear_sky_night.png"; 
      } 
     ); 
     winddir16Point = S; 
     winddirDegree = 170; 
     windspeedKmph = 5; 
     windspeedMiles = 3; 
    } 
) 

而且我不能用這個工作。

如果我打開這個網址在Safari中:

「current_condition」:[{ 「cloudcover」: 「0」,...所以有 「[」 不 「(」

所以我的JSON是錯誤的,在Xcode

我應該怎麼辦?

+1

沒有什麼不對您的JSON。 「safari中的網址」是實際json的文本表示。日誌結果是NSArray中NSDictionary的文本表示。兩者都是完全正確的。 – matt

+0

是的,現在我明白了:)但是,爲什麼我得到-2的問題... – incmiko

回答

4

你們看到在你的日誌輸出是NSArrayNSDictionary對象,而不是實際的JSON本身。如果有一個集合的只是格式源代碼JSON中的[和a你的日誌語句中有(,你有一個數組;在那裏有{你有一本字典。

所以,你需要提取從單元素數組的字典,然後才能使用它:

NSDictionary* currentCondition = fullDictFromjson[@"current_condition"][0]; 
+0

謝謝!這工作! – incmiko

+0

現在我明白了:) – incmiko