25

我正在尝试使用 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);
  });
});

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

4

6 回答 6

74

尝试json spaces在 Node 应用程序上设置“秘密”属性。

app.set('json spaces', 2)

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

于 2018-01-02T14:25:08.107 回答
47

您将不得不像这样将 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));
  });
});
于 2015-09-20T12:40:45.033 回答
5

用于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');
  });
});
于 2019-03-27T03:17:05.943 回答
1

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

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

如果您使用的是 Chrome,您可以使用JSON FormatterJSON ViewerJSONView或其他 Chrome 网上商店中的扩展程序。

Firefox从 Firefox 44 开始提供内置的JSON 查看器。

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

$ curl http://www.warehouse.com/products | jq .
于 2021-08-25T14:41:02.887 回答
0

这应该可以解决您的问题

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

app.get('/', function (req, res) {
  users.find({}).toArray(function(err, results){
      res.json(JSON.parse(results));
  });
});
于 2018-07-19T21:07:21.887 回答
-1

也许你需要JSON.parse(resp)

于 2015-09-20T12:42:41.980 回答