用C#做支付接口的时候,调java的webapi平台,要求签名内容按照第一个字符的键值 ASCII 码递增排序,而C#的排序方式只是按照首字母来排序,如果存在大小写字母,则排序结果存在差异,会导致验签不过。

使用string.CompareOrdinal对key按ASCII 码排序

提示:这里填写该问题的具体解决方案:

public Dictionary<string, object> KeySort2(JObject obj)
{
var res = new Dictionary<string, object>();
string str = JsonConvert.SerializeObject(obj);
Dictionary<string, object> dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(str);
string[] arrKeys = dic.Keys.ToArray();
Array.Sort(arrKeys, string.CompareOrdinal);
foreach (var key in arrKeys)
{
string typeName = dic[key].GetType().FullName;
if (typeName == “System.String” && !string.IsNullOrEmpty(dic[key].ToString()))
{
string value = dic[key].ToString();
res.Add(key, value);
}
if (typeName == “Newtonsoft.Json.Linq.JArray”)
{
JArray ja = (JArray)dic[key];
var tmp = new Dictionary<string, object>[ja.Count()];

                for (var i = 0; i < ja.Count(); i++){JObject jo = (JObject)ja[i];tmp[i] = KeySort2(jo);}res.Add(key, tmp);}}return res;}

C# 格式化json移除空值,参数按照第一个字符的键值 ASCII 码递增排序(SM2签名)相关推荐

  1. C# 参数按照ASCII码从小到大排序(字典序)

    在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序.如下: public static void requestPay(){Dictionary<string, string& ...

  2. 微信字典排序java_【支付宝,微信支付必备】Java实现url参数按照参数名ASCII码从小到大排序(字典序)...

    /** * * 方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串 * 实现步骤: * * @param paraMap 要排序的Map对象 * @pa ...

  3. java ascii码从小到大排序_待签名参数按照字段名的ascii码从小到大排序 怎么理解...

    展开全部 private String getSign(Map params) { Map sortMap = new TreeMap(); sortMap.putAll(params); // 以k ...

  4. python增量更新数据_django数据导出python manage.py dumpdata想指定数据增量更新的正确操作姿势是用参数--pks 5,6,7 指定键值串...

    dumpdata¶ django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]¶ 输出到标准输出与指定应用程序关 ...

  5. PHP 参数名ASCII码从小到大排序(字典序)

    function ASCII($params = array()){//ksort()对数组按照键名进行升序排序ksort($params);//reset()内部指针指向数组中的第一个元素reset ...

  6. C# 参数签名字符串按 ASCII码排序,注意其中的坑

    参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...

  7. 参数根据ASCII 码排序

    在做一些需要给参数加密或签名时,需要对参数进行排序.某些项目会用到,安全性要求较高的. /**      *      * @Title: formatParamMap      * @Descrip ...

  8. 用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]...

    用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/] 前台代码: $(function () ...

  9. php怎么格式化json,phpJSON数据格式化(美化)的方法

    一.使用 json_encode 输出<?php header('content-type:application/json;charset=utf8'); $arr = array( 'sta ...

  10. JS格式化json并展示

    一.格式化json数据展示区域 第1种: <div id="showJsonData1" contenteditable="true" style=&qu ...

最新文章

  1. PostGresSQL简介与Windows上的安装教程
  2. php intval 运算,PHP Intval 的 8、7 運算 8、7 問題
  3. windows中的定时任务--任务计划程序
  4. 凯兑换系统服务器角色,能够在所有局中通用的角色,游走于各个线路,单挑很强的凯...
  5. 学习笔记之15道简单算法题
  6. 【Linux】查询 OS、CPU、内存、硬盘信息
  7. Java再学习——关于ConcurrentHashMap
  8. 三思笔记专区,即将闪亮登场
  9. Win10专业工作站版的Ghost备份与还原
  10. TOGAF ADM 架构开发方法概述以及各个阶段的目的和交付物
  11. [论文阅读笔记16]More data,relations,context ,openness:A review and outlook for relation extraction
  12. bzoj4453 cys就是要拿英魂!(后缀数组+单调栈+二分)
  13. html图片水印的代码,简单实用的给图片加水印源代码
  14. stm32F103+EncEthernet+ENC28J60驱动+ping
  15. 滁州学院元旦晚会计算机,滁州学院机械学院2017元旦晚会精彩上演
  16. 腾讯云老用户重新注册新账号算新用户吗?
  17. js中json数组 和 字符串 互转
  18. 修改3389远程端口号
  19. 简单工厂模式--女娲造人造啥做啥
  20. qt QTabWidget setTabsClosable

热门文章

  1. python爬虫东方财富网的股票资金流(以平安银行为例)
  2. ROS——创建工作空间并编译示例
  3. bootdo项目war包部署流程
  4. 编写一个班级管理程序java_java课程设计(班级管理系统)
  5. js如何实现扫描身份证识别_JS调用阿里云OCR身份证识别
  6. WebLogic下载地址 各版本
  7. 计算机没有本地网络,网络连接里没有本地连接
  8. unity零基础学习
  9. MVPArms实现本现数据缓存
  10. matlab实现S函数的五种方式