Skip to content

queryStringify ​

对象序列化为 url query 参数

引入版本 ​

0.65.0

Demo ​

ts
import { queryStringify } from '@wyfex/iutils'

console.log('===== 基础键值 =====')
console.log(queryStringify({ id: 16888, name: 'wdx' }))
// id=16888&name=wdx

console.log('===== 空值键值,默认过滤(0和false保留) =====')
console.log(
  queryStringify({
    a: null,
    b: undefined,
    c: '',
    d: '   ',
    e: [],
    f: 0,
    g: false
  })
)
// f=0&g=false

console.log('===== 空值键值,不过滤(空格和[]会进行编码) =====')
console.log(
  queryStringify(
    {
      a: null,
      b: undefined,
      c: '',
      d: '   ',
      e: [],
      f: 0,
      g: false
    },
    { skipEmptyValue: false }
  )
)
// a=null&b=undefined&c=&d=%20%20%20&e=%5B%5D&f=0&g=false

console.log('===== 字符串首尾空格,默认自动修剪 =====')
console.log(queryStringify({ name: '  wdx ', blank: '    ' }))
// name=wdx

console.log('===== 字符串首尾空格,关闭自动修剪 =====')
console.log(
  queryStringify({ name: '  wdx ', blank: '    ' }, { trimString: false })
)
// name=%20%20wdx%20

console.log('===== 普通数组原始格式 默认comma =====')
console.log(queryStringify({ ids: [1, 2, 3] }))
// ids=1,2,3

console.log('===== 普通数组原始格式 repeat =====')
console.log(queryStringify({ ids: [1, 2, 3] }, { arrayMode: 'repeat' }))
// ids=1&ids=2&ids=3

console.log('===== 普通数组原始格式 bracket(PHP规范) =====')
console.log(queryStringify({ ids: [1, 2, 3] }, { arrayMode: 'bracket' }))
// ids[]=1&ids[]=2&ids[]=3

console.log('===== 数组元素自带逗号(自动编码防冲突)=====')
console.log(queryStringify({ names: ['a,b', 'c'] }))
// names=a%2Cb,c

console.log('===== 特殊字符自动编码 =====')
console.log(queryStringify({ text: '张三&李四=123' }))
// text=%E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B%3D123

console.log('===== 布尔值 =====')
console.log(queryStringify({ enable: true }))
// enable=true

console.log('===== 空对象 =====')
console.log(queryStringify({}))
// ''

console.log('===== 警告示例,控制台逐一打印warn =====')
console.log(
  queryStringify({
    obj: {},
    info: { x: 1 },
    dt: new Date(),
    reg: /\d/,
    syb: Symbol('wdx'),
    fn: () => 1
  })
)

基于 MIT 许可发布