node.js的querystring.stringify的使用
该方法可以将对象转换为字符串,字符串中多个参数用‘&’分割,键与值用”=”赋值
注意与 querystring.parse()区别,后者是将字符串转换为对象
querystring.stringify(obj, [sep], [eq])
obj:欲转换的对象
sep:设置分隔符,默认为‘&’
eq :设置赋值符,默认为‘=’
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }) // 'foo=bar&baz=qux&baz=quux&corge='
下面的函数是我写的一个简单的stringify
function stringify(obj, sep, eq) { sep = sep || '&'; eq = eq || '='; var tmp = []; var res = []; for(var item in obj) { if(Array.isArray(obj[item])) { obj[item].forEach(function(value) { tmp.push(item, value); res.push(tmp.join(eq)); tmp.length = 0; }); }else { tmp.push(item, obj[item]); res.push(tmp.join(eq)); tmp.length = 0; } } res.join(sep); console.log(res.join(sep)); } stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' }); //结果: foo=bar&baz=qux&baz=quux&corge=
关于querystring.stringify的源码
QueryString.stringify = QueryString.encode = function(obj, sep, eq, name) { sep = sep || '&'; eq = eq || '='; if (util.isNull(obj)) { obj = undefined; } if (util.isObject(obj)) { return Object.keys(obj).map(function(k) { var ks = QueryString.escape(stringifyPrimitive(k)) + eq; if (util.isArray(obj[k])) { return obj[k].map(function(v) { return ks + QueryString.escape(stringifyPrimitive(v)); }).join(sep); } else { return ks + QueryString.escape(stringifyPrimitive(obj[k])); } }).join(sep); } if (!name) return ''; return QueryString.escape(stringifyPrimitive(name)) + eq + QueryString.escape(stringifyPrimitive(obj)); };
关于这部分源码,有兴趣的童鞋可以一起讨论哦