Sending a JSON file to Express server using JS

后端 未结 4 1103
难免孤独
难免孤独 2021-02-07 14:03

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.

相关标签:
4条回答
  • 2021-02-07 14:20

    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.

    0 讨论(0)
  • 2021-02-07 14:26

    Try res.json(data.json) instead of res.send(...

    0 讨论(0)
  • 2021-02-07 14:37

    Just make sure you're requiring the correct file as a variable and then pass that variable into your 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));
    })
    

    Also, my personal preference is to use res.json as it sets the header automatically.

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

    EDIT:

    The drawback to this approach is that the JSON file is only read once into memory. If you don't want the file read into memory or you're planning on modify the JSON on disk at some point then you should see Ian's Answer

    0 讨论(0)
  • 2021-02-07 14:44

    Read the file first and then send the json to the client.

    fs.readFile('file_name.json', 'utf8', function (err, data) {
      if (err) throw err;
      obj = JSON.parse(data);
      res.send(JSON.stringify(obj));
    });
    
    0 讨论(0)
提交回复
热议问题