45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
![]() |
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
|