2014-07-09 69 views
1

我是一個完整的新手,只是做了這樣的事情:如何使用Node.js從json文件中讀取數據並將讀取的數據顯示到html中?

var fs = require('fs'); 
    var file = __dirname + '/data.json'; 
    var http = require ('http'); 
    var server = http.createServer(function (req, res){ 
    res.writeHead(200); 

    fs.readFile(file, 'utf8', function (err, data) { 
      if (err) { 
      console.log('Error: ' + err); 
      return; 
      } 

    data = JSON.parse(data); 

    res.end(data); 
    }); 


    }); 
     server.listen(8000); 

當我做:

data = JSON.parse(data); 
    console.dir(data); 

而不是

data = JSON.parse(data); 
    res.end(data); 

它能夠顯示數據我在控制檯上有.json文件。但是,當我嘗試創建一個服務器並使用res.end發佈數據時,它實際上並不工作。

有人可以提供一些見解嗎?是否因爲我這裏的「數據」只是一個對象?我應該如何處理我從.json獲得的數據以便用於我的html?

+0

它已經是磁盤上的JSON。無需解析。 res.end需要一個緩衝區或一個字符串,而不是一個對象。 – generalhenry

回答

1

http模塊不支持Objects作爲響應(它支持緩衝區或字符串),所以你必須這樣做:

res.end(JSON.stringify(data)); 

但是如果使用express你能做到這一點

res.send(data); 
2

由於該文件的格式已經正確,因此您可以直接將其輸入到響應中。

var fs = require('fs'); 
var file = __dirname + '/data.json'; 
var http = require ('http'); 
var server = http.createServer(function (req, res){ 
    res.writeHead(200, {'Content-Type': 'application/json'}); 
    fs.createReadStream(file, 'utf8').pipe(res); 
}); 
server.listen(8000); 
+1

這太棒了!但我正在尋找stringify功能。謝謝 – user3669481

+0

如果你想簡單地輸出文件,這是正確的方法 –

相關問題