【问题标题】:Formatting JSON output in NodeJS [duplicate]在NodeJS中格式化JSON输出[重复]
【发布时间】:2014-12-12 23:46:21
【问题描述】:

我有这段代码负责查询数据库并将信息输出为 JSON 格式:

connectionpool.getConnection(function(err, connection) {
    if (err) {
        console.error('CONNECTION error: ',err);
        res.statusCode = 503;
        res.send({
            result: 'error',
            err: err.code
        });
    } else {
        connection.query(query, function(err, rows) {
            if (err) {
                console.error(err);
                res.statusCode = 500;
                res.send({
                    result: 'error',
                    err: err.code
                });
            } else {
                res.send({
                    json: rows
                });
            }
            connection.release();
        });
    }
});

输出如下:

{"json":[{"id":39937,"transcript_alias":"AC148152.3_FGT007","expression":0,"tissue":"Leaf","conditions":"No-stress"},{"id":39941,"transcript_alias":"AC155352.2_FGT012","expression":0.217,"tissue":"Leaf","conditions":"No-stress"}]}

但我想要这个输出:

{"json":[
    {"id":39937,
      "transcript_alias":"AC148152.3_FGT007",
      "expression":0,
      "tissue":"Leaf",
      "conditions":"No-stress"},
    {"id":39941,
     "transcript_alias":"AC155352.2_FGT012",
     "expression":0.217,
     "tissue":"Leaf",
     "conditions":"No-stress"
    }
]}

带有折线,使其更加可见和易于理解。这可能吗?

【问题讨论】:

标签: javascript json node.js


【解决方案1】:

调查 MDN Documentation

JSON.stringify(value[, replacer [, space]])

您可以看到stringify 函数的第三个参数,称为 space,它可以使生成的字符串打印得很漂亮。

您可以使用制表符来模仿标准的漂亮打印外观:

JSON.stringify({ first: 1, second: 2 }, null, '\t')
// returns the string:
// '{           
//     "first": 1,
//     "second": 2
// }'

【讨论】:

  • 用我的代码res.send(JSON.stringify(rows, null, '\t'));而不是res.send({json: rows});写时它不起作用...
  • 额外的空格对机器来说没有什么不同......它只对需要理解它的人很重要。当您确实有需要查看它的人时,您只想漂亮地打印它
  • 嗯?我的意思是它是在没有标签的情况下打印的,并且没有格式化任何内容 res.send(JSON.stringify(rows, null, '\t'));
  • 如何打印?
  • 我正在使用 NodeJS,NodeJS 向您的浏览器发送信息的方式是 res.send。同样,执行res.send(JSON.stringify(rows, null, '\t')); 它不会打印任何格式化的内容。
猜你喜欢
  • 2016-04-24
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多