方法和属性


querystring.stringify(obj[, sep][, eq][, options])

序列化一个对象到一个查询字符串。可以选择是否覆盖默认的分割符('&')和分配符('=')。

Options 对象可能包含 encodeURIComponent 属性(默认为 querystring.escape)。在有必要时,它可以用 non-utf8 码来编码字符串。

例子:

  1. querystring.stringify({
  2. foo: 'bar',
  3. baz: ['qux', 'quux'],
  4. corge: ''
  5. })
  6. // returns 'foo=bar&baz=qux&baz=quux&corge='
  7. querystring.stringify({
  8. foo: 'bar',
  9. baz: 'qux'
  10. }, ';', ':')
  11. // returns 'foo:bar;baz:qux'
  12. // Suppose gbkEncodeURIComponent function already exists,
  13. // it can encode string with `gbk` encoding
  14. querystring.stringify({
  15. w: '中文',
  16. foo: 'bar'
  17. }, null, null, {
  18. encodeURIComponent: gbkEncodeURIComponent
  19. })
  20. // returns 'w=%D6%D0%CE%C4&foo=bar'

querystring.parse(str[, sep][, eq][, options])

将一个查询字符串反序列化为一个对象。可以选择是否覆盖默认的分割符('&')和分配符('=')。

Options 对象可能包含 maxKeys 属性(默认为 1000),它会被用来限制已处理键(key)的数量。设为 0 可以去除键(key)的数量限制。

Options 对象可能包含 decodeURIComponent 属性(默认为 querystring.unescape)。在有必要时,它可以将 non-utf8 码解码为字符串。

  1. querystring.parse('foo=bar&baz=qux&baz=quux&corge')
  2. // returns { foo: 'bar', baz: ['qux', 'quux'], corge: '' }
  3. // Suppose gbkDecodeURIComponent function already exists,
  4. // it can decode `gbk` encoding string
  5. querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
  6. { decodeURIComponent: gbkDecodeURIComponent })
  7. // returns { w: '中文', foo: 'bar' }

querystring.escape

querystring.stringify 使用的转意函数,在必要的时候可被重写。

querystring.unescape

querystring.parse 使用的反转意函数,在必要的时候可被重写。

它会首先尝试使用 encodeURIComponent,但如果失败,它会回滚到一个安全的等效结果上,在处理畸形的 URL 时也不会抛出错误。