将JavaScript对象写入JSON文件中的数组

lh80um4z  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(178)

如何在JSON文件中的数组中写入JavaScript对象?我的意思是:我在制造不和(消息应用程序)BOT,当用户使用命令“/add”时,BOT将要求2个输入,一个“name”和一个“artist”,这两个输入组成了一首歌,所以我为这首歌创建了一个名为“data”的对象。我还有一个JSON文件,即我的数据库,我想要的是,每次使用此命令时,我的对象都应被推入JSON文件中的数组中,所以稍后我可以在这个数组中检索一个随机对象。我该怎么做呢?我希望这个问题不会太混乱,谢谢!

module.exports={

data: new SlashCommandBuilder()
    .setName('add')
    .setDescription('Add a song to the database.')
    .addStringOption(option =>
        option.setName('artist')
            .setDescription('The artist of the song')
            .setRequired(true))
        .addStringOption(option =>
                option.setName('name')
                    .setDescription('The name of the song')
                    .setRequired(true)),

            async execute(interaction){
                let name = interaction.options.getString('name');
                let artist = interaction.options.getString('artist');
                
                const data = { name: name, artist: artist};

                await interaction.reply(`**` + artist + `**` + ` - ` + `**` + name + `**` + ` was added to the database.`)},

 };

//WHAT YOU SEE FROM NOW ON IS A DIFFERENT FILE, A JSON FILE CALLED data.json with some examples of what it should look like

[
    {
        "name":"Die for You",
        "artist":"The Weeknd"
    },
    {
        "name":"FEAR",
        "artist":"Kendrick Lamar"
    }
]
jmo0nnb3

jmo0nnb31#

您必须使用节点文件系统。
导入FS并使用writeFile函数。
https://nodejs.org/api/fs.html#filehandlewritefiledata-options

  • 不要忘记使用JSON.stringify将对象转换为字符串
const fs = require('fs');
const data = { name: name, artist: artist };

fs.writeFile("output.json", JSON.stringify(data), 'utf8', function (err) {
        if (err) {
                console.log("An error occured while writing JSON Object to File.");
                return console.log(err);
        }

        console.log("JSON file has been saved.");
});

//编辑(将新对象加入至.json)
你必须从你的文件中读取数据,添加一些东西,然后再次保存。

let rawdata = fs.readFileSync('data.json');
let data    = JSON.parse(rawdata);

data.push({name: name, artist: artist}); 
// to use push() function data have to be an array, edit your .json file to " [] ", 
// now you can add elements.

fs.writeFile("output.json", JSON.stringify(data), 'utf8', function (err) {
    if (err) {
            console.log("An error occured while writing JSON Object to File.");
            return console.log(err);
    }

    console.log("JSON file has been saved.");
});
wdebmtf2

wdebmtf22#

如果你想在数组中添加一些东西,你可以在那里.push

var arr = [];
arr.push(123);
arr.push({a:1,b:2});
arr.push(null);
arr.push("string");
console.dir(arr);

相关问题