【问题标题】:node and express send json formatted节点和快递发送 json 格式
【发布时间】:2015-12-17 05:24:43
【问题描述】:

我正在尝试使用 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,但它是一个字符串。 如何发送它以便在浏览器中读取?

【问题讨论】:

  • JSON 始终是一个字符串。要取回对象,您必须在客户端解析该字符串。

标签: json node.js express formatted


【解决方案1】:

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

app.set('json spaces', 2)

上面的这个语句会在 json 内容上产生缩进。

【讨论】:

  • 我认为 JSON.stringify() 加上 content-type 标头是人们应该理解的“官方”方式,但是这个秘密属性是首选,因为它更聪明!
【解决方案2】:

你将不得不像这样将 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));
  });
});

【讨论】:

  • 感谢它与 stringify 方式一起使用。请编辑您的帖子,以便更清楚,我可以验证它
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

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

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

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

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

    【讨论】:

      【解决方案5】:

      这应该可以解决您的问题

      var app = express();
      app.set('json spaces', 4)
      
      app.get('/', function (req, res) {
        users.find({}).toArray(function(err, results){
            res.json(JSON.parse(results));
        });
      });
      

      【讨论】:

        【解决方案6】:

        也许你需要JSON.parse(resp)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-18
          • 1970-01-01
          • 2016-12-18
          相关资源
          最近更新 更多