【问题标题】:Append to a JSON File (Node.JS, Javascript) [duplicate]附加到 JSON 文件(Node.JS,Javascript)[重复]
【发布时间】:2015-07-02 05:49:15
【问题描述】:

我目前有一个 json 文件设置,格式如下:

{
   "OnetimeCode" : "Value"
}

我希望能够做两件事:

  • 附加到文件(更改文件中的值)
  • 向文件中添加新项目(格式相同)

我已经搜索了将近一个小时,试图找到一个模块(用于 Node)或只是简单的示例代码,以使我能够完成此任务。

我已经尝试过使用几个插件,但它们并没有附加到文件中,而是完全重写了它。

其中一个插件名为“jsonfile”(npm install jsonfile)

var jf = require('jsonfile'); // Requires Reading/Writing JSON    
var jsonStr = WEAS_ConfigFile;
        var obj = JSON.parse(jsonStr);
        obj.push({OnetimeCode : WEAS_Server_NewOneTimeCode});
        jf.writeFileSync(WEAS_ConfigFile, obj); // Writes object to file

但这似乎不起作用。

感谢任何帮助!但是请保持简单。

另外:我不能使用 jQuery

【问题讨论】:

  • 您想在运行时还是在构建时执行此操作?
  • 你必须重写它,因为在 JSON 文件的末尾总会有一个终止符("]}),你需要把东西放进去它
  • 好的,有没有办法重写但保留现有数据?
  • 我不关心重写文件,它只需要简单并且用尽可能少的代码行来完成。我还需要能够保留数据。

标签: javascript json node.js


【解决方案1】:

您为jsonfile 库提供的代码看起来是一个好的开始:您将json 解析为一个对象,调用.push(),然后保存一些内容。

使用原始节点调用(假设 json 文件是数组的表示形式):

var fs = require('fs');
function appendObject(obj){
  var configFile = fs.readFileSync('./config.json');
  var config = JSON.parse(configFile);
  config.push(obj);
  var configJSON = JSON.stringify(config);
  fs.writeFileSync('./config.json', configJSON);
}

appendObject({OnetimeCode : WEAS_Server_NewOneTimeCode});

【讨论】:

  • 我会试试看..谢谢,(一个函数正是我要找的)
  • Gave me " Object # 没有方法 'push'
  • 好吧,那是因为对象没有“push”方法...要么使用数组,要么显式地在对象上设置键/值:config['user3624610'] = {name: 'bob', code: 'abc'}
  • -1 用于建议 readFileSyncwriteFileSync。请不要与 NodeJS 的异步特性作斗争。它只会伤害你自己 :P 你应该只在绝对必要的时候使用这种方法。而事实并非如此。
  • @ZeLuis 他要求简单、容易、最少行的示例代码,不会使同步解决方案“危险地不正确”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 2019-07-23
相关资源
最近更新 更多