web-dev-qa-db-ger.com

Senden einer JSON-Datei mit JS an den Express-Server

Ich bin relativ neu bei JS und ich habe eine JSON-Datei, die ich an meinen Server (Express) senden muss, die ich dann in der gesamten Web-App analysieren und verwenden kann. 

Folgendes habe ich jetzt:

  • eine JSON-Datei mit dem Namen data.json
  • ein Express-Server-Setup, das auf einem Localhost ausgeführt wird
  • etwas beschissener Code:

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

Im obigen Code versuche ich nur, die Datei an localhost: 3000/search zu senden und meine JSON-Datei zu sehen, aber alles, was ich erhalte, wenn ich zu diesem Pfad gehe, ist {}. Kann mir jemand erklären?

Jede Hilfe wird immens geschätzt. Vielen Dank im Voraus.

Prost, Theo

Beispielausschnitt von 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"
}]
5
Theo Strauss

Stellen Sie nur sicher, dass Sie die richtige Datei als Variable benötigen, und übergeben Sie diese Variable dann in Ihre 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));
})

Meine persönliche Präferenz ist die Verwendung von res.json , da der Header automatisch festgelegt wird.

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

Versuchen Sie res.json (data.json) anstelle von res.send (...

2
user5480949

Eine andere Option ist, sendFile zu verwenden und den Inhaltstypheader festzulegen.

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

Der Code geht davon aus, dass sich die Datei im selben Verzeichnis wie der JS-Code befindet. Diese Antwort erklärt, wie das funktioniert.

1
Ian

Lesen Sie zuerst die Datei und senden Sie den Json an den Client.

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