2013-07-21 46 views
0

我是一個新的iOS開發人員,他有一個很大的應用程序來編寫。 首先,我們有一個服務器,在哪裏是傑森。我必須從該服務器獲取數據並解析它。並顯示在像UIView顯示在各個地方的數據。 但是,問題是,我可以連接到服務器,獲取數據,並解析它,但我不能在括號中顯示數據。 讓我解釋一下:Objective-C JSON數據

我們的JSON數據是這樣的:

{ 
"mbsServer": { 
    "version": 1, 
    "serverTime": 1374400122, 
    "status": 2000, 
    "subscriptionExpireTime": 1575057600, 
    "channel": { 
     "id" : 47, 
     "name" : "Yurd TV", 
     "logo" : "XXX.png", 
     "screenshot" : "screen.png", 
     "packageId" : 0, 
     "viewers": 1, 
     "access": true, 
     "streams" : [ 
       { 
        "birate" : 200, 
        "hls" : "xxxx.m2u8", 
        "rtsp" : "RTSP.xx" 
       }, 
       { 
        "birate" : 500, 
        "hls" : "xxxxx", 
        "rtsp" : "xxxxx" 
       } 
     ] 
    } 

} 
}  

我想objectForKey:@"hls",但我不能。它只是把我所有的JSON數據都給我打了。我的代碼如下所示:

NSData *JSONData = [[NSData alloc] initWithContentOfURL: [NSURL URLLWithString:@"XXXXXXXXXXX"]]; 
NSArray *streams = [JSONData objectFromJSONData]; 
for(NSDictionary *hls in streams) 
{ 
    NSLog(@"%@", [hls objectForKey:@"hls"]); 
} 

請幫助...

+0

在你做任何事之前,去json.org並研究JSON語法。學習只需5-10分鐘,理解它對於解決這類問題至關重要(這樣您就不必再回到這裏,再次詢問每個新的/更改的JSON佈局)。 –

回答

1

你沒有得到streams陣列正常。請嘗試以下操作:

NSObject *json = [JSONData objectFromJSONData]; 
NSArray *streams = [json valueForKeyPath:@"mbsServer.channel.streams"]; 
for (NSDictionary *stream in streams) 
{ 
    NSLog(@"%@", [stream valueForKey:@"hls"]); 
} 
+0

亞歷克斯Skalozub,你救了我的生命:)非常感謝你:) –

1

根對象應該是一個NSDictionary,而不是NSArray - 或者,如果你想從JSON流陣列,那麼你訪問它錯了 - 看到Alex Skalozub答案。