0
我JSON转换后刚开的followig错误呼应成一本字典,错误JSON或写入字典
*终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因是:“* - [NSMutableArray里insertObject: atIndex:]:尝试在0'处插入零对象0' ***首次调用时的调用堆栈:
这是我的JSON反序列化代码,我之前使用过这个模型作为简单的plist。现在我发送一个更复杂的回声(带有对象和键),它正在崩溃。
NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];
NSLog(jsonreturn); // Look at the console and you can see what the results are
NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;
NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
if (dict)
{
rowsArray = [dict objectForKey:@"member"];
[rowsArray retain];
}
NSLog(@"Array: %@",rowsArray);
NSLog(@"count is: %i", [self.rowsArray count]);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *choiceR = [documentsDirectory stringByAppendingPathComponent:@"FollowingArray"];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:rowsArray];
[array writeToFile:choiceR atomically:YES];
[array release];
[jsonreturn release];
这里是回声的一个片段:
{"member":[
{"userid":"18",
"firstname":"Frank",
"lastname":"Johnson",
"profile":{"school":"7","grade":"12","teacher"}
},
{"userid":"38",
"firstname":"maggy",
"lastname":"Johnson",
"profile":{"school":"7","grade":"12","teacher"}
}]}
我假设我得到一个崩溃,因为数组是空的。任何想法,如果回声导致崩溃或JSON中的指令来处理这种类型的键和对象返回。
感谢, 迈克尔
我以前用过这个,这个语句对嵌套数组不正确吗? rowsArray = [dict objectForKey:@“member”]; – 2010-06-25 23:17:14
JSON数据看起来像嵌套字典。 “成员”的第一级和其他级别看起来像键值,即:“用户ID”,“18”等 所以这将是NSDictionary * rowsDict = [字典objectForKey:@“成员”]; 最简单的事情就是通过手动编辑数据来摆脱“成员”级别,然后您只使用一个字典。 – 2010-06-26 10:23:43