我有一个像这样的NSDictionary对象:
dictionary: {
data = {
"access_token" = "xxx";
"expires_in" = 00;
"refresh_token" = "yyy";
"token_type" = bearer;
};
}
如何展平它以便删除“数据”对象?有快速的方法吗? 所以输出应该如下所示:
dictionary: {
"access_token" = "xxx";
"expires_in" = 00;
"refresh_token" = "yyy";
"token_type" = bearer;
};
提前致谢。
答案 0 :(得分:1)
NSDictionary *dataDict = [mainDict objectForKey:@"data"];
答案 1 :(得分:0)
你的例子中的扁平字典:
//grab data
NSDictionary *data = [yourDict objectForKey:@"data"];
assert(data != nil);
NSDictionary *flatDict = data; //OR data.copy // OR [NSDictionary dictionaryWithDictionary:data];
答案 2 :(得分:0)
看起来“数据”不是NSDictionary。试试
id what = [dict objectForKey : @"data"];
NSLog(@"%@", [what class]);
它说什么?
答案 3 :(得分:0)
使用递归函数,这个方法的唯一问题是,如果嵌套字典中的密钥恰好相同,它将替换旧数据
- (NSDictionary *)flattedDictionary{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSString *key in self.allKeys) {
id object = [self objectForKey:key];
if (![object isKindOfClass:[NSDictionary class]] && !isNull(object)) {
[dict setObject:object
forKey:key];
} else if ([object isKindOfClass:[NSDictionary class]]){
[dict addEntriesFromDictionary:[object flattedDictionary]];
}
}
return [NSDictionary dictionaryWithDictionary:dict];
}