JSON解析在iphone应用程序中提供异常

时间:2011-08-05 03:51:24

标签: iphone objective-c

JSON数据格式如下所示

{ "affectedDate": 1310515200000, "category": "Kultur", "content": "I en festning fra 1600-tallet, ved hjelp av lys, lyd og avansert teknologi møtes de besøkende av synspunkter som kan virker fremmede, de får høre sterke, personlige historier og et mangfold av meninger og stemmer.\n
\n
Vi spør blant annet:\n
Har Sørlandskristendommen ført til maktmisbruk og dobbelmoral? \n
Må barna oppdras i Guds navn for ikke å mangle viktige verdier? og \n
Hvorfor er det bare få som tør å si høyt at de kommuniserer med de døde?\n
 \n
â€Himmelen over Sørlandet†er Vest-Agder-museets største utstillingssatsing noensinne, og  mer enn 130 mennesker har bidratt.\n
\n
 Velkommen til en tankevekkende utstilling!", "eventId": 14569, "imageId": 14597, "large":  "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_large.jpg", "main": true, "medium": "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_gmedium.jpg", "mini": "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_pmini.jpg", "small": "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_pmedium.jpg", "thumbWide": "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_pwide.jpg", "thumbnail": "http://shelf-media.s3.amazonaws.com/7c3f11582bce0b1e153619e436a622da_gsmall.jpg" "title": "Himmelen over Sørlandet" }





SBJsonParser *parser = [[SBJsonParser alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8888/description.html"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *object = [parser objectWithString:json_string error:nil];
NSArray *results = [parser objectWithString:json_string error:nil];
appDelegate.books1 = [[NSMutableArray alloc] init];
appDelegate.dates =[[NSMutableArray alloc]init];


for (int i=0; i<[results count]; i++) {
    NSDictionary *dictOne = [results objectAtIndex:i];


    //  NSLog(@"%@ - %@", [dictOne objectForKey:@"date"]);
    //  NSLog(@"%@ - %@", [dictTwo objectForKey:@"affectedDate"]);
    //  NSLog(@"%@ - %@", [eventDict objectForKey:@"location"]);


    NSLog(@"%@ - %@", [dictOne objectForKey:@"affectedDate"]);

    NSString*affectedDate=[dictOne objectForKey:@"affectedDate"];
    NSString *category=[dictOne objectForKey:@"category"];






//  Detail *aBook=[[Detail alloc] initWithDate:affectedDate category:];



}

3 个答案:

答案 0 :(得分:0)

这可能会有所帮助。它基本上是一个JSON验证器,用于检查您的JSON文件/代码是否有效。你可能想试一试。

http://jsonlint.com/

编辑:我看到了你的评论。一个错误 - 在您的JSON字符串中的缩略图之后,您忘记了逗号。另一个问题是您的内容似乎具有这些不属于传统ascii集的特殊字符。我不确定如何处理

答案 1 :(得分:0)

如果这是你得到的错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x6e07dd0'

然后,您尝试使用objectAtIndex:NSDictionary对象而不是NSArray访问对象。 NSDictionary不支持objectAtIndex:请在解析后检查您的回复,然后检查类型。

答案 2 :(得分:0)

如果您将JSON添加为库,则需要将 -all_load 添加到链接器标志。