2016-01-15 122 views
-3

這可能是一些可笑的,我錯過了,但是當我添加objectjson文件,NodeJs它增加了它(明顯?)和]添加對象之前JSON文件]

打完
var file = './data/questions.json';  
fs.appendFile(file, ', ' + JSON.stringify(req.body), function (err) { 
    console.log(err); 
}); 

結果是這樣的:

[ 
{'id':1, 'name':'Tom'} 
], {'id':2, 'name':'Jerry'} 
+0

結果似乎對我很好。你有完整的代碼嗎? –

+7

解析JSON,修改對象然後重新綁定它會更好。 – alex

+0

有沒有理由讓我在這裏投票呢? – Greg

回答

6

如果該文件已經在它有一個陣列已,你需要的是:

var file = './data/questions.json'; 
// get the contents of the file 
var fileContents = do_something_to_get_contents; 
// convert to js object 
fileContents = JSON.parse(fileContents); 
// push the array 
fileContents = fileContents.push(req.body); 
// update the file contents by stringify 
fs.replaceFile(file, JSON.stringify(fileContents), function (err) { 
    console.log(err); 
}); 

我不擅長Node JS。所以我假設如下:

  1. do_something_to_get_contents獲取文件內容。
  2. replaceFile將此函數替換爲將新內容寫入文件的函數。
+1

如果OP沒有任何節點代碼,我認爲你不擅長node.js。 – Blubberguy22

+0

@ Blubberguy22感謝好友......':)' –

+0

它不起作用,它不會對文件做任何修改 – Greg

2

您需要解析JSON文件以添加到它。嘗試這樣的:

var file = './data/questions.json'; 
var fileData = get_data_from_file 
var jData = JSON.parse(file); 
jData.push({'id':2, 'name':'Jerry'}); 
var newFileData = JSON.stringify(jData); 
//put the data back into the file 
+0

呃,沒有。 'JSON.parse(file)'將嘗試解析'./data/ questions.json',而不是文件的**內容**。你需要先閱讀它。我猜OP也希望將生成的JSON編碼數據寫入文件。 – jcaron

+0

@jcaron好點,我的壞,我沒有注意到。我會解決它,謝謝。 – Blubberguy22

相關問題