2016-01-15 75 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

相关问题