📜  Node.js querystring.stringify() 方法(1)

📅  最后修改于: 2023-12-03 15:17:55.423000             🧑  作者: Mango

Node.js querystring.stringify() 方法

在Node.js中,querystring.stringify()方法用于将JavaScript对象转换成一个查询字符串(query string)。

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

该方法接受可选的参数sepeq和可选的options参数。其中:

  • obj是必需的,表示要序列化的JavaScript对象。
  • sep是可选的,表示用于分隔键值对的字符(默认为'&')。
  • eq是可选的,表示用于分隔键和值的字符(默认为'=')。
  • options是可选的,是一个对象,用于指定一些选项,例如encodeURIComponent的使用方式。返回字符串。
示例
const querystring = require('querystring');
const obj = { name: 'Alice', age: 30 };

console.log(querystring.stringify(obj));
// 输出: name=Alice&age=30

console.log(querystring.stringify(obj, ';', ':'))
// 输出: name:Alice;age:30

在上面的示例中,我们使用querystring模块导入了querystring对象,并定义了一个JavaScript对象。我们调用了querystring.stringify()方法来将该对象序列化为查询字符串。默认的分隔符和分配符为'&''='。接着,我们为sepeq参数传递了自定义值,并检查了querystring.stringify()方法输出的查询字符串。

可选参数

querystring.stringify()方法还接受一个可选的options参数。该参数是一个对象,可以指定各种选项,例如:

  • encodeURIComponent: 指定用于编码查询字符串键和值的函数。默认情况下,encodeURIComponent()方法用于编码键和值。如果你有自己的编码函数,你可以将其传递给encodeURIComponent选项。例如:

    const obj = { key: 'Hello, World!' };
    const options = { encodeURIComponent: s => s.toUpperCase() };
    const qs = querystring.stringify(obj, null, null, options);
    // 输出: KEY=HELLO%2C%20WORLD!
    

    在上面的示例中,将encodeURIComponent选项指定为一个接受字符串并返回其大写形式的函数。因此,在处理key值时,方法使用了自定义函数,将其转换为大写字母。

  • arrayFormat: 指定如何处理重复的键。如果某个键在对象中出现多次,arrayFormat选项指定如何将其序列化为查询字符串。可能的值是'none'(不做处理,默认值)、'bracket'(使用方括号)、或'index'(使用数字索引)。

    const obj = { key: [1, 2, 3] };
    let qs = querystring.stringify(obj, null, null, {arrayFormat: 'none'});
    // 输出: key=1&key=2&key=3
    qs = querystring.stringify(obj, null, null, {arrayFormat: 'bracket'});
    // 输出: key[]=1&key[]=2&key[]=3
    qs = querystring.stringify(obj, null, null, {arrayFormat: 'index'});
    // 输出: key[0]=1&key[1]=2&key[2]=3
    
结论

querystring.stringify()方法是一个用于将JavaScript对象序列化为查询字符串的快捷方法。你可以指定自定义的分隔符、分配符、编码函数和序列化选项。在使用时,请注意你的查询字符串中是否需要编码,可以使用encodeURIComponent选项来进行针对性的设置。