C# 格式化json移除空值,参数按照第一个字符的键值 ASCII 码递增排序(SM2签名)
用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签名)相关推荐
- C# 参数按照ASCII码从小到大排序(字典序)
在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序.如下: public static void requestPay(){Dictionary<string, string& ...
- 微信字典排序java_【支付宝,微信支付必备】Java实现url参数按照参数名ASCII码从小到大排序(字典序)...
/** * * 方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串 * 实现步骤: * * @param paraMap 要排序的Map对象 * @pa ...
- java ascii码从小到大排序_待签名参数按照字段名的ascii码从小到大排序 怎么理解...
展开全部 private String getSign(Map params) { Map sortMap = new TreeMap(); sortMap.putAll(params); // 以k ...
- python增量更新数据_django数据导出python manage.py dumpdata想指定数据增量更新的正确操作姿势是用参数--pks 5,6,7 指定键值串...
dumpdata¶ django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]¶ 输出到标准输出与指定应用程序关 ...
- PHP 参数名ASCII码从小到大排序(字典序)
function ASCII($params = array()){//ksort()对数组按照键名进行升序排序ksort($params);//reset()内部指针指向数组中的第一个元素reset ...
- C# 参数签名字符串按 ASCII码排序,注意其中的坑
参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...
- 参数根据ASCII 码排序
在做一些需要给参数加密或签名时,需要对参数进行排序.某些项目会用到,安全性要求较高的. /** * * @Title: formatParamMap * @Descrip ...
- 用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]...
用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/] 前台代码: $(function () ...
- php怎么格式化json,phpJSON数据格式化(美化)的方法
一.使用 json_encode 输出<?php header('content-type:application/json;charset=utf8'); $arr = array( 'sta ...
- JS格式化json并展示
一.格式化json数据展示区域 第1种: <div id="showJsonData1" contenteditable="true" style=&qu ...
最新文章
- PostGresSQL简介与Windows上的安装教程
- php intval 运算,PHP Intval 的 8、7 運算 8、7 問題
- windows中的定时任务--任务计划程序
- 凯兑换系统服务器角色,能够在所有局中通用的角色,游走于各个线路,单挑很强的凯...
- 学习笔记之15道简单算法题
- 【Linux】查询 OS、CPU、内存、硬盘信息
- Java再学习——关于ConcurrentHashMap
- 三思笔记专区,即将闪亮登场
- Win10专业工作站版的Ghost备份与还原
- TOGAF ADM 架构开发方法概述以及各个阶段的目的和交付物
- [论文阅读笔记16]More data,relations,context ,openness:A review and outlook for relation extraction
- bzoj4453 cys就是要拿英魂!(后缀数组+单调栈+二分)
- html图片水印的代码,简单实用的给图片加水印源代码
- stm32F103+EncEthernet+ENC28J60驱动+ping
- 滁州学院元旦晚会计算机,滁州学院机械学院2017元旦晚会精彩上演
- 腾讯云老用户重新注册新账号算新用户吗?
- js中json数组 和 字符串 互转
- 修改3389远程端口号
- 简单工厂模式--女娲造人造啥做啥
- qt QTabWidget setTabsClosable