【问题标题】:Add object to JSON file before ]将对象添加到 JSON 文件之前]
【发布时间】:2016-01-15 22:57:28
【问题描述】:

这可能是我错过了一些荒谬的事情,但是当我使用NodeJsobject 添加到我的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'}

【问题讨论】:

  • 结果似乎对我有好处。你有完整的代码吗?
  • 你最好解析 JSON,修改对象,然后重新串起来。
  • 它完全按照您的要求做。您需要实际解析js,添加对象,然后再次将其字符串化并保存到文件中。
  • @MarcoAlka 从结果来看req.body{'id':2, 'name':'Jerry'}
  • @PraveenKumar 我正在尝试,我会在几秒钟内提供更新

标签: javascript json node.js


【解决方案1】:

如果文件中已经有一个数组,你需要的是:

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 将其替换为将新内容写入文件的函数。

【讨论】:

  • 如果 OP 没有任何节点代码,我认为你不擅长 node.js 也没关系。
  • @Blubberguy22 谢谢哥们...:)
  • @Greg 你只是复制粘贴了吗?
  • 我做了大部分的部分,除了我必须“做点什么”
  • @Greg fs.replaceFile 也是伪的!请用真正的功能替换它...
【解决方案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

【讨论】:

  • 呃,没有。 JSON.parse(file) 将尝试解析 ./data/questions.json,而不是文件的 内容。您需要先阅读它。而且我猜 OP 还希望将生成的 JSON 编码数据写入文件。
  • @jcaron 好点,我的错,我没有注意到。我会解决的,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2018-05-21
相关资源
最近更新 更多