首页 > 解决方案 > 如何使用算术更改 JSON 文件的值?

问题描述

对不起,如果标题没有意义。

基本上,在我的case.JSON文件中,我有以下内容:

{
  "case": 0
}

我想要它,这样当代码运行时,值case会上升1,我可以在任何地方分配它(discord.js 示例),在 Rich-embed 中我可以将 caseNumber 放在页脚/字段/描述中。

我很难让这个有意义,所以任何帮助都将不胜感激。

每次我重新启动代码时,我都想使用 Node FS 将它保存到我的 JSON 文件中,所以我希望它每次都更新它。

这些是我以前的尝试

// console.log('Starting...')
var fs = require('fs');
var cases = fs.readFileSync('case.json');
var caseUp = cases + 1;
var translateCases = JSON.parse(caseUp);

var data = JSON.stringify(translateCases)
fs.writeFile('case.json', data, finished);
function finished(err){
    console.log('All set.');
}

//////////////////////////////////////////////////// I've tried these 2 seperately ^ v


// console.log(translateCases);

console.log('Starting...')
var caseJSON = require('./case.json');
var caseTest = caseJSON.case[0 + 1]
caseTest = 0;
caseTest += 1;
// caseTestTranslate = JSON.parse(caseTest)

var actualNumber = JSON.stringify(caseTest)
fs.writeFile('case.json', actualNumber, finished)
function finished(err){
    console.log('All good.')
}

console.log(caseTest)

标签: javascriptjsondiscord.js

解决方案


你快到了!仔细看顺序:

var cases = fs.readFileSync('case.json'); // is a string
var caseUp = cases + 1; // string + number => string, which is not what you wanted
// for this case, you can parse the filecontents first with JSON.parse on the file contents

或者,你在下面的代码中做了什么

var caseJSON = require('./case.json'); // now caseJSON is directly parsed as an object
// so caseJSON.case contains the value you want to increment

使用这种方法,它看起来像这样:

var fs = require('fs');

console.log('Starting...')
var caseJSON = require('./case.json');
var caseJSONIncremented = { case: caseJSON.case + 1 }

var fileContent = JSON.stringify(caseJSONIncremented)
fs.writeFile('case.json', fileContent, finished)

function finished(err){
    console.log('All good.')
}

推荐阅读