2016-03-18 48 views
2

我是Node.js和JavaScript的新手。我有一個results.json文件,我想保留一個運行日誌的結果從一個腳本,從網絡上的圖像。但是,我當前的腳本只覆蓋現有的結果。如何構建或添加到results.json,以便每個後續結果都記錄在results.json文件中?我希望它是有效的json。如何添加到node.js中的現有json文件

這裏是普通的例子:

var currentSearchResult = someWebSearchResult 
var fs = require('fs'); 
var json = JSON.stringify(['search result: ' + currentSearchResult + ': ', null, "\t"); 
fs.writeFile("results.json", json); 

而且results.json:

[ 
    "search result: currentSearchResult" 
] 
+0

的【如何追加到節點文件?]可能的複製(http://stackoverflow.com/questions/3459476/how-to -append-to-a-file-in-node) – peteb

+0

你想讓結果文件包含有效的json嗎?如果是這樣,只是附加到文件是不夠好的。 –

+0

@KevinB是的,這將是理想的,但老實說,我不確定append是否是正確的術語,所以我編輯了我的問題。 – filmplane

回答

5

如果你想要的文件是有效的JSON,你必須打開你的文件,解析JSON,你的新的結果追加到數組,其轉換回字符串,再保存。

var fs = require('fs') 

var currentSearchResult = 'example' 

fs.readFile('results.json', function (err, data) { 
    var json = JSON.parse(data) 
    json.push('search result: ' + currentSearchResult) 

    fs.writeFile("results.json", JSON.stringify(json)) 
}) 
+0

json.push()??? –

+0

'json'是一個數組,您可以使用'.push'將一個新項添加到數組中。 –

+0

在此示例中,「json」不是數組tho –

0

在一般情況下,如果要附加到文件,你應該使用:

fs.appendFile("results.json", json , function (err) { 
    if (err) throw err; 
    console.log('The "data to append" was appended to file!'); 
}); 

追加文件創建文件如果不存在。

但是,如果您想先追加JSON數據,那麼您需要先讀取數據,然後纔可以覆蓋該數據。

fs.readFile('results.json', function (err, data) { 
    var json = JSON.parse(data); 
    json.push('search result: ' + currentSearchResult);  
    fs.writeFile("results.json", JSON.stringify(json), function(err){ 
     if (err) throw err; 
     console.log('The "data to append" was appended to file!'); 
    }); 
}) 
+0

爲了澄清,我不想覆蓋數據。我想添加額外的數據到現有的結果 – filmplane

+0

@filmplane 第一個例子附加數據,而不是有效的json。 第二個示例也追加數據,但json結構不被破壞。 –

1

您可以使用Bunyan。也就是說

一個簡單而快速的JSON日誌庫

相關問題