js常用库qs

31 阅读2分钟

qs 是一个流行的 JavaScript 库,用于解析和序列化 URL 查询字符串。它提供了比原生的 URLSearchParams 更丰富的功能和更大的灵活性,特别是在处理嵌套对象和数组时。

安装

你可以使用 npm 或 yarn 安装 qs

npm install qs
# 或者
yarn add qs

使用示例

解析查询字符串

qs.parse 方法用于将查询字符串解析为对象。

import qs from 'qs';

const queryString = 'name=Alice&age=30&hobbies=reading&hobbies=traveling';
const parsed = qs.parse(queryString);

console.log(parsed);
// 输出: { name: 'Alice', age: '30', hobbies: ['reading', 'traveling'] }

序列化对象

qs.stringify 方法用于将对象序列化为查询字符串。

import qs from 'qs';

const obj = {
  name: 'Alice',
  age: 30,
  hobbies: ['reading', 'traveling']
};

const queryString = qs.stringify(obj);

console.log(queryString);
// 输出: 'name=Alice&age=30&hobbies=reading&hobbies=traveling'

处理嵌套对象

qs 可以处理嵌套对象,这在处理复杂的查询字符串时非常有用。

import qs from 'qs';

const queryString = 'user[name]=Alice&user[age]=30&user[hobbies]=reading&user[hobbies]=traveling';
const parsed = qs.parse(queryString);

console.log(parsed);
// 输出: { user: { name: 'Alice', age: '30', hobbies: ['reading', 'traveling'] } }

序列化嵌套对象

同样,qs 也可以将嵌套对象序列化为查询字符串。

import qs from 'qs';

const obj = {
  user: {
    name: 'Alice',
    age: 30,
    hobbies: ['reading', 'traveling']
  }
};

const queryString = qs.stringify(obj);

console.log(queryString);
// 输出: 'user[name]=Alice&user[age]=30&user[hobbies]=reading&user[hobbies=traveling'

配置选项

qs 提供了多种配置选项,使你可以根据需要自定义解析和序列化的行为。

解析选项

  • qs.parse 的常用选项包括:
    • ignoreQueryPrefix: 是否忽略查询字符串前缀(通常是 ?)。
    • delimiter: 指定分隔符(默认为 &)。
    • depth: 指定解析嵌套对象的最大深度(默认为 5)。
const queryString = '?name=Alice&age=30';
const parsed = qs.parse(queryString, { ignoreQueryPrefix: true });

console.log(parsed);
// 输出: { name: 'Alice', age: '30' }

序列化选项

  • qs.stringify 的常用选项包括:
    • addQueryPrefix: 是否添加查询字符串前缀(通常是 ?)。
    • arrayFormat: 指定数组的序列化格式(如 indices, brackets, repeat, comma)。
    • delimiter: 指定分隔符(默认为 &)。
const obj = { name: 'Alice', age: 30 };
const queryString = qs.stringify(obj, { addQueryPrefix: true });

console.log(queryString);
// 输出: '?name=Alice&age=30'

总结

qs 是一个强大的工具,用于解析和序列化查询字符串,特别是在处理复杂的嵌套对象和数组时。通过使用 qs,你可以轻松地将 URL 查询字符串与 JavaScript 对象之间进行转换,提高代码的可读性和可维护性。