美文网首页
字典按照key排序后拼接字符串

字典按照key排序后拼接字符串

作者: 夏天的风_song | 来源:发表于2017-06-05 15:53 被阅读0次

我们在对接一些第三方的SDK的接口的时候,通常需要签名,签名方法就是:

  • 将字典类型的参数,按照key的升序排列后,拼接成待签名的原始字符串
  • 将原始字符串进行MD5加密

今天我们主要是分析将字典升序排列后拼接成待签名的原始字符串的

举个栗子

假设说我们待排序的字典是这样的:

  NSDictionary *params = @{
                             @"name":@"LinH",
                             @"hometown":@"Dongying",
                             @"userID":@"330909199301271234",
                             @"phone":@"18814868888"
                             };

那我们使用的方法如下:

/**
 字典的升序排列以及字符串的拼接

 @param params 待排序的字典
 @return 拼接好的字符串
 */
- (NSString *)getStringWithDic:(NSMutableDictionary*)params{
    //排序key
    NSArray *keyArray = [params allKeys];//获取待排序的key
    NSArray *sortArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2 ];
    }];//获取排序后的key
    //排序后的以key=value拼接的数组
    NSMutableArray *valueArray = [NSMutableArray array];
    for(NSString *sortSring in sortArray){
        NSString *signSring = [NSString stringWithFormat:@"%@=%@",sortSring,[params objectForKey:sortSring]];
        [valueArray addObject:signSring];
    }
    
    // 就是用“,”把每个排序后拼接的数组,用字符串拼接起来
    NSString *string = [valueArray componentsJoinedByString:@"&"];
    return string;
}

最后得到的字符串

hometown=Dongying&name=LinH&phone=18814868888&userID=330909199301271234

ps:在实际生产环境中,字典要判断value是否为空的情况。当value为空时,compare:...总是返回NSOrderedSame。因为返回的是nil,而nil在OC中是0,而NSOrderedSame在枚举中的值就是等于0.

相关文章

  • 字典按照key排序后拼接字符串

    我们在对接一些第三方的SDK的接口的时候,通常需要签名,签名方法就是: 将字典类型的参数,按照key的升序排列后,...

  • iOS接口安全认证

    签名和加密流程: 1.将请求参数按照a-z排序后,用key=value&key=value拼接,得到待签名字符串;...

  • 字典的升序排列以及字符串的拼接

    /**字典的升序排列以及字符串的拼接 @param params 待排序的字典@return 拼接好的字符串*/

  • python 常用操作记录

    python 列表及字典(按key、按value排序) python dict按照key 排序:1、method ...

  • lambda

    针对字典进行排序 针对数组,其每个元素为字典,按照字典的某个key进行排序

  • swift 字典转化jsonstring排序sort

    有个需求需要把字典转成Json字符串,但是Json字符串Key值,按照ASCII码排序 一、系统自带JSONStr...

  • 排序函数(sort()、sorted()、argsort()函数

    sorted(字典.items(), key=lambda x:x[0]) # 按照字典的k进行排序,返回由(k,...

  • python中dict详解

    字典的添加、删除、修改操作### 字典的遍历### 字典的更新#### 设置默认值### 按照key排序### 按...

  • Json串key按照字典顺序拼接

    对于待签名字符串拼写规则:参数名的k按照字典顺序排列,每个参数(k-v)之间用“&”链接。如果v为普通元素集合,则...

  • 实现有序字典

    实现字典有序化的方法 分类添加数组变量存储key值; 按照NSDictionary的key来进行排序; 将字典中的...

网友评论

      本文标题:字典按照key排序后拼接字符串

      本文链接:https://www.haomeiwen.com/subject/vmgifxtx.html