我很新的東西相關的很多代碼,但我是一個緩慢的,有時是痛苦的學習曲線。node.js中讀取文件中解析到JSON和輸出
我有一個包含一些JSON,我讀入node.js的分析和推到一個web套接字文件。該腳本工作正常,但我只收到一個json對象返回。
devices.json:(完整的文件)不是每個元件具有相同的數據內容,並有一個數據源內的任何數字元件對象。
{
"element":"SENS01",
"data":{
"type":"SEN",
"descr":"T100"
},
"element":"SENS02",
"data":{
"type":"SEN",
"descr":"T088",
"uid":"X1A1AA",
"check_on":"2014/06/29"
},
"element":"SENS03",
"data":{
"type":"SEN",
"descr":"T000:",
"uid":"X1A1AB",
"check_on":"2014/06/29"
},
"element":"LED1",
"data":{
"type":"LED",
"state":"0"
}
}
做的東西的代碼是;
server.js:
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
fs = require('fs');
// creating the server (localhost:8000)
app.listen(8000);
// Server started - load page.
function handler(req, res) {
fs.readFile('/var/www/html/dashboard.html', function (err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading web page');
}
res.writeHead(200);
res.end(data);
});
}
// creating a new websocket.
io.sockets.on('connection', function (socket) {
console.log();
// 1st READ of json state file.
fs.readFile('devices.json', 'utf8', function (err, data) {
if (err) throw err;
// Parse/check its valid json.
var dump = JSON.parse(data);
socket.volatile.emit('MAP.room1', dump);
});
});
當我連接到插座被髮送(從服務器控制檯登錄)
調試以下 - WebSocket的寫作5 ::: {「名稱「:」MAP.room1「,」args「:[{」element「:」LED1「,」data「:{」type「:」LED「,」state「:」0「}}]}
我從來沒有得到任何其他的對象,只有這一個。我已經看了一遍關於如何遍歷對象的網絡,但它對我來說大體上毫無意義:(
我試圖實現的是當你從設備連接到web套接字的每個對象。 JSON文件是在同一時間推出1個對象,一旦這個工作我希望看到;
調試 - WebSocket的寫作5 ::: {「名」:「MAP.room1」,「ARGS」 :[{「element」:「LED1」,「data」:{「type」:「LED」,「state」:「0」}}]}
debug - websocket writing 5 ::: {「name 「:」 MAP.room1" , 「ARGS」:[{ 「元素」: 「SENS03」, 「數據」:{ 「類型」: 「SEN」, 「DESCR」: 「T000」, 「UID」:「X1A1AB 「,」check_on「:」2014/06/29「}}]} etc ...
如果我把console.log(data)
行放在我的server.js中,那麼我會看到整個文件的預期結果。它只有一次被解析,我留下了1條。
誰能請解釋一下這是怎麼回事,我如何能夠最好地克服這一點。它需要以一種非常簡單的方式理想地使用我自己的代碼/數據集作爲示例,因此我可以理解「這對我意味着什麼」我閱讀的很多Web示例和內容傾向於使用不同的示例,這些示例只是讓我感到困惑。我知道聲明變量等的基礎知識,並且對Ruby有着非常有限的經驗,並且使用一個簡單的腳本來解析從API接收到的一些推送數據,但這只是關於它。
如果您需要任何更多的上下文等,那麼請讓我知道,否則任何幫助感激地接受。
'元素'是唯一的,如果它有幫助,但在devices.json中的對象和嵌套是固定的 - 不幸的是,json是固定的,必須是這樣的,以便傳遞給d3來更新相當複雜的DOM。 d3的東西是由其他人提供的,我已經給出了關於我的web套接字如何輸出以更新正確的東西的規範。所以在不改變我的源代碼json(devises.json)的情況下是否有辦法解決這個問題? – user3788685
想想我已經找到了一種方法來解決這個問題。一旦我確定它按預期工作,我會發佈一個答案。 – user3788685