Javascript 从restify获得正确的json输出

Javascript 从restify获得正确的json输出,javascript,mysql,json,node.js,restify,Javascript,Mysql,Json,Node.js,Restify,我有一个restifyapi来打印MySQL查询的json输出。以下是相关代码部分 server.get('/echo/:message', function (req, res, next) { connection.connect(); connection.query('SELECT * FROM hkh.monthly_curves LIMIT 2', function(err, rows, fields) { if (err) throw err;

我有一个restifyapi来打印MySQL查询的json输出。以下是相关代码部分

server.get('/echo/:message', function (req, res, next) {
    connection.connect();
    connection.query('SELECT * FROM hkh.monthly_curves LIMIT 2', function(err, rows, fields) {
        if (err) throw err;

        var jsonString = JSON.stringify(rows);
        console.log(jsonString);
        res.send(jsonString);
    });
    connection.end();
    return next();
});
console.log(jsonString)的输出
是一个正确的json字符串。在这里

[
   {
      "id":1,
      "date_transacted":"1998-05-31T16:00:00.000Z",
      "tbill_1_year":2.6,
      "tbond_2_year":3.15,
      "tbond_5_year":3.94,
      "tbond_10_year":5.3
   },
   {
      "id":2,
      "date_transacted":"1998-06-30T16:00:00.000Z",
      "tbill_1_year":3.2,
      "tbond_2_year":3.58,
      "tbond_5_year":4.04,
      "tbond_10_year":5.43
   }
]
在浏览器上,
res.send(jsonString)的json输出格式不正确。看起来是这样的,

"[{\"id\":1,\"date_transacted\":\"1998-05-31T16:00:00.000Z\",\"tbill_1_year\":2.6,\"tbond_2_year\":3.15,\"tbond_5_year\":3.94,\"tbond_10_year\":5.3},{\"id\":2,\"date_transacted\":\"1998-06-30T16:00:00.000Z\",\"tbill_1_year\":3.2,\"tbond_2_year\":3.58,\"tbond_5_year\":4.04,\"tbond_10_year\":5.43}]"
如何使浏览器json输出正确格式化?我觉得奇怪的是,同一个变量
jsonString
看起来可能不同。是由res.send()引起的。


编辑:我自己找到了答案。请参阅提供的答案。

无需对mysql输出使用JSON.stringify()
res.send()
将执行json.stringify()本身。在问题的原始代码中,额外的\字符是由mysql输出的两次JSON.stringify()引起的

 server.get('/echo/:message', function (req, res, next) {
        connection.connect();
        connection.query('SELECT * FROM hkh.monthly_curves LIMIT 2', function(err, rows, fields) {
            if (err) throw err;

            //var jsonString = JSON.stringify(rows);
            //console.log(jsonString);
            res.send(rows);
        });
        connection.end();
        return next();
    });

无需对mysql输出执行JSON.stringify()
res.send()
将执行json.stringify()本身。在问题的原始代码中,额外的\字符是由mysql输出的两次JSON.stringify()引起的

 server.get('/echo/:message', function (req, res, next) {
        connection.connect();
        connection.query('SELECT * FROM hkh.monthly_curves LIMIT 2', function(err, rows, fields) {
            if (err) throw err;

            //var jsonString = JSON.stringify(rows);
            //console.log(jsonString);
            res.send(rows);
        });
        connection.end();
        return next();
    });