2013-07-21 36 views
0

Я новый разработчик iOS, у которого есть большое приложение для записи. Сначала у нас есть сервер, где находится Джейсон. Мне нужно получить данные с этого сервера и разобрать его. И отображать данные в различных местах на дисплее, например, UIView. Но проблема в том, что я могу подключиться к серверу, получить данные и проанализировать его, но я не могу отображать данные в скобках. Поясню:Objective-C JSON Data

Наша 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

Алекс Скалозуб, ты спас мне жизнь :) Большое спасибо :) –

1

Корневой объект должен быть NSDictionary вместо NSArray - или, если вы хотите, чтобы получить массив потоков с JSON, то вы обращаетесь неправильно - смотрите ответ Alex Skalozub.