web-dev-qa-db-ja.com

JSを使用してJSONファイルをExpressサーバーに送信する

私はJSを初めて使用し、JSONファイルをサーバーに送信する必要があります(Express)。作成したWebアプリ全体でそのコンテンツを解析して使用できます。

私が今持っているものは次のとおりです。

  • data.jsonという名前のJSONファイル
  • ローカルホストで実行されているExpressサーバーのセットアップ
  • いくつかのくだらないコード:

    app.get( '/ search'、function(req、res){res.header( "Content-Type"、 'application/json'); res.send(JSON.stringify({/ data.json /})) ;});

上記のコードでは、ファイルをlocalhost:3000/searchに送信してJSONファイルを表示しようとしていますが、そのパスに移動したときに受け取るのは{}のみです。誰でも説明できますか?

どんな助けも大歓迎です。事前に感謝します。

乾杯、テオ

Data.jsonのスニペットの例:

[{
    "name": "Il Brigante",
    "rating": "5.0",
    "match": "87",
    "cuisine": "Italian",
    "imageUrl": "/image-0.png"
}, {
    "name": "Giardino Doro Ristorante",
    "rating": "5.0",
    "match": "87",
    "cuisine": "Italian",
    "imageUrl": "/image-1.png"
}]
9
Theo Strauss

変数として正しいファイルが必要であることを確認してから、その変数をres.sendに渡します!

const data = require('/path/to/data.json')

app.get('/search', function (req, res) {
  res.header("Content-Type",'application/json');
  res.send(JSON.stringify(data));
})

また、私の個人的な好みは res.json ヘッダーを自動的に設定するため。

app.get('/search', function (req, res) {
  res.json(data);
})
12
Khauri

Res.send(...の代わりにres.json(data.json)を試してください.

2
user5480949

別のオプションは、sendFileを使用してコンテンツタイプヘッダーを設定することです。

app.get('/search', (req, res) => {
    res.header("Content-Type",'application/json');
    res.sendFile(path.join(__dirname, 'file_name.json'));
})

コードは、ファイルがJSコードと同じディレクトリにあると想定しています。これは answer の仕組みを説明しています。

2
Ian

最初にファイルを読み取り、次にjsonをクライアントに送信します。

fs.readFile('file_name.json', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
  res.send(JSON.stringify(obj));
});
0
Arpit Solanki