javascript - 如何使用算术更改 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)
解决方案
你快到了!仔细看顺序:
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.')
}
推荐阅读
- angular - Angular:当我将鼠标移出组件时不再触发事件侦听器
- google-apps-script - Google App Script:通过按钮执行插件的功能(图片)
- c# - 在 .NET Core 2.2 中使用 SocketsHttpHandler 并忽略证书验证
- javascript - 使用 HTML5 和 CSS 的暗模式切换
- sql - SQL Server - SQL Server 如何选择最佳执行计划
- c# - 我的着色器在桌面上工作,但在 Android 上屏幕变黑
- java - 复利计算器
- javascript - 材质 UI 全局 css 变量
- c++ - {fmt} 等价于 cout.rdbuf?
- c++ - 尝试将文本附加到 C++ 11 中的(假)主机文件