+(void)enumerateKeysAndObjectsUsingBlock:(NSDictionary*)dic block:(void (^)(id key, id obj))block{
NSArray *allKey = [[dic allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSLiteralSearch];
}];
for (int i=0;i
id obj = dic[allKey[i]];
id key = allKey[i];
block(key,obj);
}
}
+ (NSString*)handleDic:(NSDictionary*)data
{
NSMutableString *resultStr = [[NSMutableString alloc]initWithCapacity:0];
//获取排好序的字典 blcok 返回key和Value
[[self class] enumerateKeysAndObjectsUsingBlock:data block:^(id key, id obj) {
//根据类型判断 针对每种类型处理
if ([obj isKindOfClass:[NSDictionary class]]) { // 是字典对象
obj = [[self class] handleDic:obj];
//组装字典
obj = [NSString stringWithFormat:@"{%@}",[[NSString stringWithFormat:@"%@",obj] substringToIndex:[NSString stringWithFormat:@"%@",obj].length-1]];
}
if ([obj isKindOfClass:[NSArray class]]) {// 是数组对象
NSMutableString *resobj = [NSMutableString new];
for (NSDictionary *dict in obj) {
obj = [[self class] handleDic:dict];
//组装每一个字典
[resobj appendFormat:@"%@,",[NSString stringWithFormat:@"{%@}",obj]];
}
//给数组拼接中括号
obj= [NSString stringWithFormat:@"[%@]",[resobj substringToIndex:resobj.length-1]];
}
if ([obj isKindOfClass:[NSString class]] || [obj isKindOfClass:[NSNumber class]]) {//字符串数字类型
//拼接字符串和数字类型
[resultStr appendFormat:@"%@=%@&",key,obj];
}
}];
return [resultStr substringToIndex:resultStr.length-1];
}
使用
NSDictionary *dic = @{
@"code":@0,
@"list":@[@{
@"userName":@"wjx",
@"sex":@"男"
},
@{
@"userName":@"www",
@"sex":@"男"
},@{
@"userName":@"jjj",
@"sex":@"男"
}],
@"data":@{
@"userinfo":@{
@"roleNo":@"0000000002",
@"lastLoginTime":@"2020-11-24 17:25:04",
@"roleFlag":@"1",
@"userName":@"网点社操作员",
@"level":@{
@"normal":@"1",
@"vip":@{
@"start":@"1",
@"time":@"2020-02-02",
@"nums":@[@{@"b":@"1",@"a":@"3"},@{@"a":@"2"}]
},
@"svip":@"3"
}
},
@"token":@"5d60ab6bf0d64899952f38bdb7042010"
},
@"message":@"操作成功",
@"status":@"success"
};
NSString *sgin = [HTSignatureUtil handleDic:dic];
NSLog(@"%@",sgin);