Ios 来自JSON的字典中的键
我正在导入一个JSON字典。我需要知道使用它的钥匙的名称 字典正在加载数据确定:Ios 来自JSON的字典中的键,ios,json,dictionary,key,Ios,Json,Dictionary,Key,我正在导入一个JSON字典。我需要知道使用它的钥匙的名称 字典正在加载数据确定: - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [connection release]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; [responseData
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSDictionary *results = [responseString JSONValue];
NSLog(@"tenga: %@",results);
但当我尝试获取密钥名称时,应用程序崩溃:
NSArray * keys = [results allKeys];
NSLog(@"keys: %@",keys); ...}
错误消息:
[\uu NSArrayM allKeys]:发送到实例0x5a16b30的无法识别的选择器
2011-08-30 22:52:26.171 Twitter搜索[1906:207]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayM allKeys]:未识别的选择器发送到实例0x5a16b30'
为什么allkey
不工作
如何获取密钥的名称以便开始使用对象
编辑
我在使用发布的日志说,这个调用返回的不是NSDictionary,而是NSArray。NSArray没有导致崩溃的allKeys选择器。如果您发布更多关于您正在使用的JSON框架的信息,我们可以帮助您更好地解决问题您从中获取JSON字符串的URL提供了一个数组,而不是一个对象,即它看起来像:
[ { "foo1" : "bar1" }, { "foo2" : "bar2" },... ]
注意括号[]
。在这种情况下,JSON解析器将NSArray
作为顶级(Objective-C)对象。你需要一些逻辑,比如:
id results = [responseString JSONValue];
if ([results isKindOfClass: [NSArray class]])
{
// probably iterate through whtever is in it
}
else if ([results isKindOfClass: [NSDictionary class]])
{
// dictionary at the top level. Hooray!
}
else
{
// something went horribly wrong, deal with it.
}
您遇到了什么样的崩溃?嗨,Tnx,我在问题中添加了错误。那么您使用的是什么JSON框架?您的服务器返回数组,而不是字典。检查响应字符串的值,例如,使用NSLog打印它。谢谢,如果我记录字符串“responseString”,我会得到一个大字符串,如果我记录字典,我会得到字典样式的日志,那么如何确保数组进入字典?