我面临着json和Objective c的一些问题。 atm我正在使用sbJson框架(如果有人告诉我这样做,我可以更改框架!)并且我无法解析json数组。
这是我要解析的json,
{"JsonEventosResult":
[
{"nombre":"Venta de Reposición N°13","id":34,"fecha":"16/09/2011"},
{"nombre":"evento rose","id":37,"fecha":"04/10/2011"},
{"nombre":"Prueba PhoneGap","id":40,"fecha":"23/11/2011"}
]
}
这是我在iphone上的代码:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSError *error;
SBJSON *json = [[SBJSON new] autorelease];
NSArray *luckyNumbers = [json objectWithString:responseString error:&error];
[responseString release];
if (luckyNumbers == nil)
label.text = [NSString stringWithFormat:@"JSON parsing failed: %@", [error localizedDescription]];
else {
NSMutableString *text = [NSMutableString stringWithString:@"Lucky numbers:\n"];
for (int i = 0; i < [luckyNumbers count]; i++)
[text appendFormat:@"%@\n", [luckyNumbers objectAtIndex:i]];
label.text = text;
}
}
我得到的错误是luckyNumbers是一个有0个对象的数组。
我从http://mobileorchard.com/tutorial-json-over-http-on-the-iphone/得到的样本。
那么问题出在哪里? json我得到表单服务还是框架?
THX
答案 0 :(得分:4)
你处理错了。它不是一个数组,它是一个字典,key @“JsonEventosResult”的值是数组。因此,在您的JSON objectwithstring行中,将其设为nsdictionary,然后指向该键
或删除{“JsonEventosResult”:和final}以便它已经是一个数组
哦,我认为你必须使用Unicode来转义重音字符和度数符号(在jsonlint.org上测试你的JSON以确保它有效)