queryStringify
对象序列化为 url query 参数
引入版本
0.65.0
Demo
ts
import { queryStringify } from '@wyfex/iutils'
console.log('===== 基础键值 =====')
console.log(queryStringify({ name: 'wdx', age: 29 }))
// name=wdx&age=29
console.log('===== null / undefined 自动剔除 =====')
console.log(queryStringify({ a: null, b: undefined, c: 0, d: false }))
// c=0&d=false
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({ list: [] }))
// ''
console.log('===== 空数组 skipEmptyArray关闭 =====')
console.log(queryStringify({ list: [] }, { skipEmptyArray: false }))
// list=
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({ a: '' }))
// ''
console.log('===== 空字符串 skipEmptyString关闭 =====')
console.log(queryStringify({ a: '' }, { skipEmptyString: false }))
// a=
console.log('===== 布尔值 =====')
console.log(queryStringify({ enable: true }))
// enable=true
console.log('===== 嵌套对象警告示例 =====')
console.log(queryStringify({ info: { x: 1 } }))
// info=%5Bobject%20Object%5D
console.log('===== 空对象 =====')
console.log(queryStringify({}))
// ''
console.log('===== 综合混合场景 =====')
const mixData = {
keyword: 'wdx',
ids: [1, 2],
emptyArr: [],
emptyStr: '',
deleted: null,
edited: undefined
}
console.log(queryStringify(mixData))
// keyword=wdx&ids=1,2