JSON或者写字典
将 JSON echo 转换为字典后,出现以下错误:
* Termination app due to uncaught exception 'NSInvalidArgumentException', Reason: '* -[NSMutableArray insertObject:atIndex:]: attempts to insert nil物体位于 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 中存在处理此类键和对象返回的指令,请提供任何想法。
谢谢, 迈克尔
I'm gettin the followig error after converting JSON echo into a dictionary,
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'
*** Call stack at first throw:
Here is my JSON deserialization code, I've used this model before for a simple plist. Now I'm sending a more complicated echo (with objects and keys) and it's crashing.
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];
Here is a snippet of the echo:
{
"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"
}
}
]
}
I'm assuming I'm getting a crash because the array is empty. Any Ideas if the echo is causing the crash or there an instruction in JSON to handle this kind of Keys and Objects return.
Thanks,
Michael
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在将 NSDictonary 传递给 rowsArray,因为您的 JSON 数据似乎是嵌套在字典中的字典。所以我假设这会导致 rowsArray 为空并在您尝试将其添加到可变数组时导致崩溃。
You are passing a NSDictonary to rowsArray as your JSON data seems to be a dictionary nested within a dictionary. So I would assume that is causing rowsArray to be empty and cause the crash when you try and add it to your mutable arrray.