UNPKG

1.32 kBJavaScriptView Raw
1var staticEncodeURIComponent = require('./staticEncodeURIComponent')
2
3var each = require('./each')
4var isArray = require('./isArray')
5var isNull = require('./isNull')
6var isUndefined = require('./isUndefined')
7var isPlainObject = require('./isPlainObject')
8
9function stringifyParams (resultVal, resultKey, isArr) {
10 var _arr
11 var result = []
12 each(resultVal, function (item, key) {
13 _arr = isArray(item)
14 if (isPlainObject(item) || _arr) {
15 result = result.concat(stringifyParams(item, resultKey + '[' + key + ']', _arr))
16 } else {
17 result.push(staticEncodeURIComponent(resultKey + '[' + (isArr ? '' : key) + ']') + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))
18 }
19 })
20 return result
21}
22
23/**
24 * 序列化查询参数
25 *
26 * @param {Object} query 查询参数
27 */
28function serialize (query) {
29 var _arr
30 var params = []
31 each(query, function (item, key) {
32 if (!isUndefined(item)) {
33 _arr = isArray(item)
34 if (isPlainObject(item) || _arr) {
35 params = params.concat(stringifyParams(item, key, _arr))
36 } else {
37 params.push(staticEncodeURIComponent(key) + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))
38 }
39 }
40 })
41 return params.join('&').replace(/%20/g, '+')
42}
43
44module.exports = serialize