node 和 express 发送 json 格式

node and express send json formatted

我正在尝试使用快递发送格式化的 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);
  });
});

我在浏览器中看到 json,但它是一个字符串。 我怎样才能发送它以便它在浏览器中可读?

您必须像这样将 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));
  });
});

也许你需要JSON.parse(resp)

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

app.set('json spaces', 2)

上面的语句将在 json 内容上产生缩进。

这应该可以解决您的问题

var app = express();
app.set('json spaces', 4)

app.get('/', function (req, res) {
  users.find({}).toArray(function(err, results){
      res.json(JSON.parse(results));
  });
});

使用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');
  });
});

从服务器发送 JSON 格式的输出,考虑到服务器的资源使用和性能,可能是不可取的。特别是在生产环境中。

相反,您可以找到几种在客户端格式化 JSON 输出的方法。

如果您使用的是 Chrome,您可以使用 JSON Formatter, JSON Viewer, JSONView 或 Chrome 网上商店中的其他扩展。

自 Firefox 44 起,Firefox 提供内置 JSON viewer

在命令行或 shell 脚本中使用 curlwget 时,您可以将 JSON 中的结果通过管道传输到 jq

$ curl http://www.warehouse.com/products | jq .