在这个我似乎找不到的错误中,我正在读取一个名为 db.json 的 .json 文件,更新 json 并尝试写入 .json 文件。虽然我正在解析和字符串化 json,但我收到此错误:语法错误:/Users/3x7r3m157/Development/Javascript/db.json:JSON 输入意外结束我的代码如下:const args = require('yargs').argv;const fs = require('fs');const util = require('util');const leaderboard = require('./db.json')const addCompetitor = (name) => { leaderboard[name] = { points: [], times: [] } console.log(leaderboard) return leaderboard}console.log(leaderboard)const addCompetitorTimes = (data) => { console.log(data) //this method takes a string of 'competitorName_time' //parses it into substrings 'name' & 'time'. //Afterwards it iterates through time in minutes and seconds as a string //in the format of '00:00', then parses the string into substrings //of minutes and seconds delimited by the ':' character. //Thereafter it converts the string to integeters and converts the time //into time in seconds for easy comparison of times. //Finally it assigns the time to the competitor in the leaderboard and //writes to json file db.json let parser = 0; var competitor = ''; let times = ''; let seconds = ''; let minutes = ''; let timeInSeconds = 0; for (let i = 0 ; i < data.length ; i ++) { if (parser == 0 && data[i] == '_') { parser ++ continue } if (parser == 0) { //Stack Overflow peeps, weird error right hurrr: competitor += data[i] } if (parser == 1) { times += data[i] } } parser = 0 for (let i = 0 ; i < times.length ; i ++) { if (parser == 0 && times[i] == ':') { parser ++ continue } if (parser == 0) { minutes += times[i] } if (parser == 1) { seconds += times[i] } } seconds = parseInt(seconds); minutes = parseInt(minutes); let minutesInSeconds = minutes * 60 seconds = minutesInSeconds + seconds leaderboard[competitor].times = seconds console.log(leaderboard) fs.writeFileSync('./db.json', JSON.stringify(leaderboard)); return leaderboard}addCompetitorTimes(args.competitorTimes)
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
问题是“require”为您解析了 json,但您使用 json.parse 对其进行了冗余解析。它已经是一个对象,这失败了。只是不要重复解析。需要就够了。
千巷猫影
TA贡献1829条经验 获得超7个赞
您正在编辑您仍在阅读的文件。首先更改路径的名称,我建议在使用 JSON 或读/写文件时始终使用 try catch:
try {
fs.writeFileSync(require.resolve('./new-db.json')), JSON.stringify(leaderboard));
} catch (error) {
console.log(error)
}
添加回答
举报
0/150
提交
取消