问题描述
我想将一些数据推送到一个JSON文件中,该文件只有连续的数字作为键,而散列字符串作为值。
var readyFiles = JSON.parse(fs.readFileSync('requests.json','utf8'));
console.log(readyFiles)
const num = readyFiles.length
readyFiles.filehashList.push({ num : _filehash })
console.log(readyFiles)
var json = JSON.stringify(readyFiles)
fs.writeFileSync('requests.json',json,'utf8');
预期输出应为:
{
"filehashList": [
{
"1": "QmWpVdqGqPGo9ApLErzxBYfxD2eABKtYCQYCXQpnbYWjro"
},{
"2": "QmTYsKnWBsVQTC1ioBHX7VWeY9tZLJXXzxuVkGiBSdBDea"
},{
"3": "QmPiszxoFdCfwtLvWihaqFuBVpbU168WNVDbHUqtmuCDj3"
},{
"4": "QmdLQ8TTg7EvJ4jvvbQiNWQUniKz6yKQugsvzVTMwNLJu1"
},{
"5": "QmcziropQqSUdbnfAkYBwsLQXdEVf9N88Nqz4K1dfKeQGL"
},{
"6": "QmSiEYVCY8G7zrc5X8UamkA6TymDyAg8dM39L7qnNFt7tY"
}
]
}
但是,实际的行为是:
{
"filehashList": [
{
"1": "QmWpVdqGqPGo9ApLErzxBYfxD2eABKtYCQYCXQpnbYWjro"
},{
"num": "QmSiEYVCY8G7zrc5X8UamkA6TymDyAg8dM39L7qnNFt7tY"
}
]
}
如您所见,最后一项中有'num'作为键。
我怎么能在那里找到下一个键,在上述情况下,尤其是“ 6”?
解决方法
const readyFiles = JSON.parse(fs.readFileSync('requests.json','utf8'));
const readyFilesKeys = Object.keys(readyFiles.fileHashList);
const countKey = readyFilesKeys.length + 1;
readyFiles.fileHashList.push({ [countKey]: _fileHash })
var json = JSON.stringify(readyFiles)
fs.writeFileSync('requests.json',json,'utf8');
- 数键和+ 1
- 在键外使用方括号[]使其成为可能,如@Taplar所评论的(感谢:))