web-dev-qa-db-ja.com

ノードとエクスプレス送信json形式

フォーマットされたjsonをExpressで送信しようとしています。

これが私のコードです:

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が表示されますが、文字列です。ブラウザで読めるように送信するにはどうすればよいですか?

16
BoumTAC

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));
  });
});
20
Bidhan A

「秘密」のプロパティを設定してみてくださいjson spaces Nodeアプリ。

app.set('json spaces', 2)

上記のステートメントは、jsonコンテンツにインデントを生成します。

30
Alexis Diel

type('json')を使用して、フォーマット用に_Content-Type_およびJSON.stringify()を設定します。

_var app = express();

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

これはあなたの問題を解決するはずです

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

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

多分あなたはJSON.parse(resp)する必要があります

0
Jason Livesay