NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/xe-utils/methods/url/serialize.js

45 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-09-14 14:47:11 +08:00
var staticEncodeURIComponent = require('../static/staticEncodeURIComponent')
var each = require('../base/each')
var isArray = require('../base/isArray')
var isNull = require('../base/isNull')
var isUndefined = require('../base/isUndefined')
var isPlainObject = require('../base/isPlainObject')
function stringifyParams (resultVal, resultKey, isArr) {
var _arr
var result = []
each(resultVal, function (item, key) {
_arr = isArray(item)
if (isPlainObject(item) || _arr) {
result = result.concat(stringifyParams(item, resultKey + '[' + key + ']', _arr))
} else {
result.push(staticEncodeURIComponent(resultKey + '[' + (isArr ? '' : key) + ']') + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))
}
})
return result
}
/**
* 序列化查询参数
*
* @param {Object} query 查询参数
*/
function serialize (query) {
var _arr
var params = []
each(query, function (item, key) {
if (!isUndefined(item)) {
_arr = isArray(item)
if (isPlainObject(item) || _arr) {
params = params.concat(stringifyParams(item, key, _arr))
} else {
params.push(staticEncodeURIComponent(key) + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))
}
}
})
return params.join('&').replace(/%20/g, '+')
}
module.exports = serialize