如何将连续数字作为字符串推入json对象中?

问题描述

我想将一些数据推送到一个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. 数键和+ 1
  2. 在键外使用方括号[]使其成为可能,如@Taplar所评论的(感谢:))