2015-01-11 4 views
1

Код:как разобрать этот JSon данные в ios7

NSURL * url=[NSURL URLWithString:@"alamghareeb.com/mobileData.ashx?catid=0&No=10"]; 
NSData * data=[NSData dataWithContentsOfURL:url]; 
NSError * error; 
NSMutableDictionary * json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error]; 
NSMutableArray * referanceArray=[[NSMutableArray alloc]init]; 
NSMutableArray * periodArray=[[NSMutableArray alloc]init]; 
NSArray * responseArr = [NSArray arrayWithArray:json[@"item"]]; 

for (NSDictionary * dict in responseArr) { 
    [referanceArray addObject:[dict objectForKey:@"created"]]; 
} 

JSON выглядит следующим образом:

{ 
    "item" = [ 


    { 
    "id" : "2292", 

    "created" : "10/01/2015 10:21:18 ص", 

    "title" : "الإمارات: ملابس رياضية فاخرة لتحسين أداء الإبل في السباقات ", 

    "image_url" : "http://alamghareeb.com/Photos/L63556482078696289044.jpg", 

    "image_caption" : "" 

    }, 

    { 

    "id" : "2291", 

    "created" : "10/01/2015 09:28:11 ص", 

    "title" : "طبيبة تجميل 'مزورة' تحقن مرضاها بالغراء والاسمنت", 

    "image_url" : "http://alamghareeb.com/Photos/L63556478891290039015.jpg", 

    "image_caption" : "" 
    } 
] 
} 
+1

спасибо за размещение на JSON, но вы можете сказать нам, что вы сделали, чтобы разобрать эту вашу собственную личность? – MZaragoza

+0

Я бы рекомендовал вам использовать парсер JSON. –

+0

NSURL * url = [NSURL URLWithString: @ "http://alamghareeb.com/mobileData.ashx?catid=0&No=10"]; NSData * data = [NSData dataWithContentsOfURL: url]; Ошибка NSError *; NSMutableDictionary * json = [NSJSONSerialization JSONObjectWithData: параметры данных: NSJSONReadingMutableContainers error: & error]; NSMutableArray * referanceArray = [[NSMutableArray alloc] init]; NSMutableArray * periodArray = [[NSMutableArray alloc] init]; NSArray * responseArr = [NSArray arrayWithArray: json [@ "item"]]; –

ответ

3

Это JSON не является действительным. Вы построили его вручную? "item" = ... должен быть "item" : ....

В будущем вы можете запустить свой JSON через http://jsonlint.com, чтобы проверить возникшие проблемы. Аналогично, вы должны добавить проверку ошибок в свой код Objective-C, например.

NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error]; 
if (!json) { 
    NSLog(@"JSON parsing error: %@", error); 
} 

Я также предлагаю изменить свой код сервера не построить JSON вручную, но воспользоваться функциями JSON (например, если PHP, создавать ассоциативные массивы, а затем сгенерировать вывод JSON с помощью функции json_encode).


Итак, как только вы исправить ошибку JSON, чтобы разобрать результаты могут выглядеть следующим образом:

NSError *error; 
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
if (!dictionary) { 
    NSLog(@"NSJSONSerialization error: %@", error); 
    return; 
} 

NSArray *items = dictionary[@"item"]; 

for (NSDictionary *item in items) { 
    NSString *identifier = item[@"id"]; 
    NSString *created = item[@"created"]; 
    NSString *title  = item[@"title"]; 
    NSString *urlString = item[@"image_url"]; 
    NSString *caption = item[@"image_caption"]; 

    NSLog(@"identifier = %@", identifier); 
    NSLog(@"created = %@", created); 
    NSLog(@"title = %@", title); 
    NSLog(@"urlString = %@", urlString); 
    NSLog(@"caption = %@", caption); 
} 
+0

http://www.jsoneditoronline.org/ - хороший сервис для этого – demon9733

+0

OP фактически опубликовал часть результата конечной точки: http://alamghareeb.com/mobileData.ashx?catid=0&No=10 как минимум часть проблемы похоже, на стороне сервера –

0

Вы можете использовать NSJSONSerialization. Нет необходимости импортировать какой-либо класс.

NSDictionary *result = [NSJSONSerialization JSONObjectWithData:[strResult dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; 

или использовать NSData непосредственно как

NSDictionary *result = [NSJSONSerialization JSONObjectWithData:theJSONDataFromTheRequest options:0 error:nil]; 

Источник: Stackoveflow question

Смежные вопросы