JS对象转url参数
JS对象转url参数开发中,前后端数据传递需要加密,遇到GET请求时,需求如下:1. 需要先将数据对象转换成url地址参数格式;2. 再将其AES加密;3. 将其和baseURL拼接。
·
开发中,前后端数据传递需要加密,遇到GET请求时,需求如下:
1. 需要先将数据对象转换成url地址参数格式;
2. 再将其AES加密;
3. 将其和baseURL拼接。
下面代码用于实现1. 数据对象转换成url地址参数格式。
*可根据自己实际的业务需要灵活变动。
function objectToQuery() {
let obj = arguments[0];
let prefix = arguments[1];
if (typeof obj !== "object") return "";
const attrs = Object.keys(obj);
return attrs.reduce((query, attr, index) => {
// 判断是否是第一层第一个循环
if (index === 0 && !prefix) query += "?";
if (typeof obj[attr] === "object") {
const subPrefix = prefix ? `${prefix}[${attr}]` : attr;
query += this.objectToQuery(obj[attr], subPrefix);
} else {
if (prefix) {
query += `${prefix}[${attr}]=${obj[attr]}`;
} else {
query += `${attr}=${obj[attr]}`;
}
}
// 判断是否是第一层最后一个循环
if (index !== attrs.length - 1) query += "&";
return query;
}, "");
}
// 测试效果
let data = {
a: 1,
b: 2,
c: 3,
d: {
e: 5,
f: 6
},
}
console.log(objectToQuery(data)); // ?a=1&b=2&c=3&d[e]=5&d[f]=6
console.log(objectToQuery(data.d, "d")); // d[e]=5&d[f]=6
更多推荐
已为社区贡献1条内容
所有评论(0)