Sending a JSON file to Express server using JS

Viewed 34676

I am fairly new to JS and I have a JSON file that I need to send to my server (Express) that I can then parse and use its contents throughout the web app I'm building.

Here's what I have now:

  • a JSON file named data.json
  • an Express server set up that is running on a localhost
  • some shitty code:

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

In the code above I am just trying to send the file to localhost:3000/search and see my JSON file, but all I receive when I go to that path is { }. Can anyone explain?

Any help would be immensely appreciated. Thanks so much in advance.

Cheers, Theo

Example snippet from 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 Answers

Another option is to use sendFile and set the content type header.

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

The code assumes the file is in the same directory as the JS code. This answer explains how this works.

Because __dirname resolves to where your script is running I prefer using path.resolve()

var path = require('path');

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