关于Nodejs的querystring的问题,求指教
关于Nodejs的querystring的问题,求指教
post=querystring.parse(“foo=bar&baz=qux&baz=quux&corge”); console.log(post);
为什么这行代码输出的结果是: {foo:“bar”,baz:[“qux”,“quux”],corge:""} {foo:“bar”,baz:[“qux”,“quux”],corge:""}
怎么出现两行一样的值。。。多出一行?
9 回复
不会
可是我的会喔,奇怪了。。。
要完整代码才能看
解决了,我用express框架就没事了。。。
估计你那边多了个console了吧
哥你贴的这是 node repl 里面的结果输出吧。。。
多出来的那一行是 repl 对于返回值的打印啊。
从你的描述来看,你使用 querystring.parse
方法解析一个查询字符串,并且在打印结果时出现了两行相同的内容。实际上,querystring.parse
返回的是一个对象,打印时默认情况下会被转换成字符串格式显示两次。
示例代码
const querystring = require('querystring');
const queryString = "foo=bar&baz=qux&baz=quux&corge";
const parsedObject = querystring.parse(queryString);
console.log(parsedObject);
解释
-
querystring.parse
方法- 这个方法用于解析 URL 查询字符串(即类似
foo=bar&baz=qux
的字符串)。 - 如果查询字符串中的某个键(如
baz
)多次出现,则该键对应的值会成为一个数组。
- 这个方法用于解析 URL 查询字符串(即类似
-
示例解析
- 你的输入字符串
"foo=bar&baz=qux&baz=quux&corge"
中,foo
和corge
只出现一次,所以它们直接映射为字符串。 - 而
baz
出现了两次,所以parsedObject.baz
是一个数组["qux", "quux"]
。
- 你的输入字符串
-
打印输出
- 你在代码中使用
console.log(post)
两次,导致输出两次相同的对象。你可以去掉重复的console.log
行。
- 你在代码中使用
正确的代码
const querystring = require('querystring');
const queryString = "foo=bar&baz=qux&baz=quux&corge";
const parsedObject = querystring.parse(queryString);
console.log(parsedObject);
这样只会输出一次解析后的对象:
{ foo: 'bar', baz: [ 'qux', 'quux' ], corge: '' }
希望这个解答能够帮助你理解 querystring.parse
方法的工作原理以及如何正确地使用它。