Node API函数返回字符串数组而不是对象

时间:2017-04-19 04:31:22

标签: json node.js express

我想从这个函数返回一个JSON对象数组,但是我遇到了格式化问题。我是Node.js的新手,希望能更好地理解它。

function getItems (callback) {
  connection.query(SQL_getItems, (err, results) => {
    if (err) {
      callback(err);
      return;
    }
    callback(null, results.map((item) => `{'name': '${item.name}', 'value': '${item.value}'}`));
  });
}

当前的JSON如下所示:

["name: test, value: 1","name: test2, value: 0"]

我想要的是一个JSON对象数组

[{"name": "test","value": "1"},{"name": "test2","value": "0"}]

我已经尝试过调整格式,但无法完全正确。我尝试过JSON.parse,但它已经有效(但并不理想)JSON。

2 个答案:

答案 0 :(得分:1)

实际上,使用这样的模板字符串:

`{'name': '${item.name}', 'count': '${item.value}'}`

map函数将返回一个字符串数组,这就是你所拥有的。要按预期返回JSON对象,我认为您的代码应为:

results.map(item => JSON.stringify({name: item.name, count: item.value}))

p / s:如果我完全记得,您可以将接受标头作为application/json传递,以便res.send({<JS object>})自动完成工作。

<强>已更新: 你的结果是否像这样,我试过但你的结果不同:

enter image description here

答案 1 :(得分:0)

感谢@thelonglqd指出我正确的方向。问题是结果已经是我需要的格式,所以我对它们进行了双重编码。

function getItems (callback) {
  connection.query(SQL_getItems, (err, results) => {
    if (err) {
      callback(err);
      return;
    }
    callback(null, JSON.stringify(results));
  });
}