我正在使用以下代码来处理其工作的其他JSON数据,但在这里它给出了字典异常,它有少量数据。
这是我正在解析的数据
{ "affectedDate": 1310515200000,
"category": "Sport",
"content": "Kl 2100 hver tredje lørdag i måneden arrangerer Harvey's en interaktiv fotballquiz på våre 13 HD-skjermer. Nivået er høyt, men samtidig er det underholdning i form av videoproduksjoner og midt i blinken for enhver fotballinteressert kristiansander. Quizen er myntet på folk som har lyst å lære litt om fotball - og ikke bare de som vet hvor mange fly som gjennomsnittlig flyr over Goodison Park. Det er 1-4 personer pr lag og gratis påmelding i baren på Harvey's eller på tlf 380 72305. Umbro er hovedsponsor av Harvey's Saturday Night Football Quiz og stiller med flotte rundepremier! \n
\ n Vi harogsåenmaratontabellbeståendeavalle resultatene fra 2011s runder,men hvor vi stryker hvert lag sinefiredårligstepoengsummerforan finalen i desember。 Laget som vinner sammenlagt sender vi til EM i Polen og Ukraina neste sommer!\ n \ n Utvalgte deler av tidligere quizer,soundtrack,maratontabell og annen informasjon finner duforøvrigpåvårehjemmesiderwww.harveys.no \ n \ n 来自dette erenmånedligfootballhappeningåfåmedseg的Vi garanterer!“, “eventId”:15946,“image”:“http://shelf-media.s3.amazonaws.com/39be3cbc5584eb0e9f61c9926a62d478_gmedium.jpg”,
"latitude": "58.1441382",
"longitude": "7.9933589",
"title": "HARVEY'S SATURDAY NIGHT FOOTBALL QUIZ" }
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.krsconnect.no/community/api.html?method=event&appid=620&eventid=15946&affecteddate=1310515200000"]];
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];
appDelegate.books1 = [[NSMutableArray alloc] init];
appDelegate.dates =[[NSMutableArray alloc]init];
appDelegate.descriptionArray=[[NSMutableArray alloc]init];
NSArray *results = [parser objectWithString:json_string error:nil];
NSLog(@"%@", results);
for (int i=0; i<[results count]; i++) {
Detail *aBook = [[Detail alloc] initWithDictionary:[results objectAtIndex:i]];
[appDelegate.descriptionArray addObject:aBook];
[aBook release];
}
答案 0 :(得分:1)
当我查看实际网页时,最外层的结构是“对象”(字典)。但是你解析输入字符串两次,一次期望一个字典,第二次解析一个数组(它不能同时解析)。我怀疑,当你收到错误时,它就是你正在访问的数组。 (由于您未提供任何日志或其他错误信息,因此无法确定。)
通常,您需要测试(使用isKindOfClass
)从JSON解析器返回的类型,以确保它是您期望的类型。
答案 1 :(得分:0)
Detail *aBook = [[Detail alloc] initWithDictionary:[results objectAtIndex:i]];
您假设results
数组中的所有对象都是NSDictionary
个对象 - JSON可以包含两个字典和数组,所以这远远不能保证。
答案 2 :(得分:0)
您的JSON字符串包含字典作为其根对象,而不是数组,因此NSDictionary
方法将其初始化为objectWithString:
。 NSDictionary
没有objectAtIndex:
方法,这就是您在尝试调用时看到异常的原因。