首页 > 解决方案 > Node JS 向 Javascript 控制台显示不同的结果

问题描述

我已经在 Google Chrome 控制台的片段中测试了下面的代码。

输入和输出:

var values = [{"id":"1","Product":"Pen","Qty":"10"},{"id":"2","Product":"Pencil","Qty":"20"}]

for(var key in values) {
  var val = values[key];

  console.log(val);
}

使用节点 JS

我已经安装了一个名为body-parser. 从 Node JS 访问 HTML 内容。

// Get HTML values
var {values} = req.body;

// Iterate through the dictionary
for(var key in values) {
  var value = values[key];

  console.log(value);
}

这是 CMD 上的实际输出 - 与 Google Chrome 控制台非常不同。我很困惑为什么它不同。

[
{
"
i
d
"
:
"
1
"
,
"
P
r
o
d
u
c
t
"
:
"
P
e
n
"
,
"
Q
t
y
"
:
"
1
0
"
}
,
{
"
i
d
"
:
"
2
"
,
"
P
r
o
d
u
c
t
"
:
"
P
e
n
c
i
l
"
,
"
Q
t
y
"
:
"
2
0
"
}
]

如何获得与 Javascript 控制台相同的输出?我想访问它id和其他内容。

它是相同的语言(Javascript)但输出不同,这有什么意义?是因为使用了 Node JS 吗?

编辑:

Use var {values} = JSON.parse(req.body); 

我收到此错误:

TypeError: Cannot convert object to primitive value

标签: javascriptnode.js

解决方案


req.body.values,根据您的评论,是一个字符串。JSON.parse使用如下方式解析它:

// Get HTML values
var values = JSON.parse(req.body.values);

// Iterate through the dictionary
for(var key in values) {
  var value = values[key];

  console.log(value);
}

推荐阅读