node和express发送json格式化

Bou*_*TAC 14 json formatted node.js express

我正在尝试使用express发送格式化的json.

这是我的代码:

var app = express();

app.get('/', function (req, res) {
  users.find({}).toArray(function(err, results){
    // I have try both
    res.send(JSON.stringify(results, null, 4));
    // OR
    res.json(results);
  });
});
Run Code Online (Sandbox Code Playgroud)

我在浏览器中获得了json,但它是一个字符串.如何发送它以便在浏览器中可读?

小智 33

尝试json spaces在Node应用程序上设置"secret"属性.

app.set('json spaces', 2)
Run Code Online (Sandbox Code Playgroud)

上面的这个陈述将在json内容上产生缩进.

  • 我认为 JSON.stringify() 加上内容类型标头是人们应该理解的“官方”方式,但这个秘密属性是首选,因为它更聪明! (2认同)
  • 这是100%有效的解决方案。谢谢。 (2认同)

Bid*_*han 20

你将不得不像这样将Content-Type设置为application/json

app.get('/', function (req, res) {
    users.find({}).toArray(function(err, results){
        res.header("Content-Type",'application/json');
        res.send(JSON.stringify(results, null, 4));
  });
});
Run Code Online (Sandbox Code Playgroud)


Afa*_*kin 7

用于type('json')设置Content-TypeJSON.stringify()格式化:

var app = express();

app.get('/', (req, res) => {
  users.find({}).toArray((err, results) => {
    res.type('json').send(JSON.stringify(results, null, 2) + '\n');
  });
});
Run Code Online (Sandbox Code Playgroud)