Skip to content

qs

查询字符串解析与序列化工具。

导入

typescript
import { qsParse, qsStringify } from '@cloudcome/utils-core/qs'

类型定义

QSReader<T>

typescript
type QSReader<T extends AnyObject> = (value: string, key: string, qsObject: T) => unknown

QSWriter<T>

typescript
type QSWriter<T extends AnyObject = AnyObject> = (value: unknown, key: string, query: T) => string | null

函数

qsParse

解析查询字符串为对象。

typescript
function qsParse<T extends AnyObject>(queryString: string, parser?: QSReader<T>): T

参数

参数类型描述
queryStringstring查询字符串(可以包含或不包含前导 ?
parserQSReader<T>可选,自定义解析函数

返回值

T - 解析后的对象

示例

typescript
// 基本用法
qsParse('key=value&foo=bar') // { key: 'value', foo: 'bar' }
qsParse('?key=value&foo=bar') // { key: 'value', foo: 'bar' }

// 解析数组
qsParse('ids[]=1&ids[]=2&ids[]=3') // { ids: ['1', '2', '3'] }

// 自定义解析
qsParse('key=value', (value, key) => {
  return value.toUpperCase()
}) // { key: 'VALUE' }

qsStringify

将对象序列化为查询字符串。

typescript
function qsStringify<T extends AnyObject>(qsObject: T, stringify?: QSWriter<T>): string

参数

参数类型描述
qsObjectT要序列化的对象
stringifyQSWriter<T>可选,自定义序列化函数

返回值

string - 序列化后的查询字符串

示例

typescript
// 基本用法
qsStringify({ key: 'value', foo: 'bar' }) // 'key=value&foo=bar'

// 序列化数组
qsStringify({ ids: [1, 2, 3] }) // 'ids[]=1&ids[]=2&ids[]=3'

// 自定义序列化
qsStringify({ key: 'value' }, (value, key) => {
  if (value === null) return null // 跳过 null 值
  return String(value)
})

基于 MIT 许可发布