JS中签名组串QueryString生成
Posted 第三眼的思绪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中签名组串QueryString生成相关的知识,希望对你有一定的参考价值。
/**
* @param data json字符串字节流
* @desc 用于生成签名拼接字符串QueryString。
* 1.按ASCII码从小到大排序,空键/值和空字符串不参与组串
* 2.统一使用UTF8进行编码签名,防止编码方式或特殊字符不兼容问题
* 3.签名原始串中,字段名和字段值都采用原始值,即不进行URL Encode
* 4.注意整形、浮点型数据参与签名方式(如:浮点数3.10体现为3.1、0.0体现为0)
* 5.内嵌JSON或ARRAY解析拼接需转字符串且按紧凑方式,即内嵌各K/V或值之间不应有空格或换行符等等
* 6.内部值中嵌套对象中空值或空字符串不做任何处理(即保留)
* 7.内部值中的嵌套对象键值属性保持原有顺序,不做特殊排序处理
*/
function buildSignQueryString(params)
var keys = Object.keys(params).sort()
var queryString = "";
keys.forEach((key,index) =>
var val = params[key];
if (key == undefined || key ==null || key.length == 0 || val == undefined || val==null || val.length == 0)
return
if (queryString.length > 0)
queryString += "&"
queryString += key + "="
switch(typeof(val))
case "object": queryString += JSON.stringify(val,(k,v)=>typeof v==='undefined'?null:v);break;
default: queryString += val;break;
)
return queryString;
验证JS参数对象
var params =
"d":"中华人民共和国",
"b":2.12345678,
"a":1,
"e":[
1,
2.12345678,
true,
"中华人民共和国",
"e4":"中化人民共和国",
"e2":2.12345678,
"e3":true,
"e1":1,
"e5":[],
"e6":undefined
,
undefined
],
"c":true,
"f":
"f4":"中化人民共和国",
"f2":2.12345678,
"f3":true,
"f1":1,
"f6":undefined,
"f5":
"f5_1":1,
"f5_2":2.12345678,
"f5_3":true,
"f5_5":[],
"f5_6":undefined,
"f5_4":"中化人民共和国"
以上是关于JS中签名组串QueryString生成的主要内容,如果未能解决你的问题,请参考以下文章