字符串化JSON数据丢失了我要字符串化的对象

时间:2019-05-03 19:52:21

标签: node.js json

我是NodeJS的新手,我试图通过编写Discord机器人来更好地学习它。但是我在将对象字符串化为JSON时遇到问题。我认为设置的数组存在问题,但是我不确定该怎么做。如果不应该设置数组并使用下面的guildMembers示例,该如何将这些数据插入JSON文件中?

我在StackOverflow上浏览了一些示例,并找到了这篇特别的文章:JSON Stringify Removing Data From Object。但是,鉴于我要实现的目标,我不清楚。

    var o = {};
    var guildKey = guild.id;
    o[guildKey] = [];
    o[guildKey]['guildMembers'] = {};
    var guildMembers = []
    guild.members.forEach(function(guildMember, guildMemberId) {
        if (!guildMember.user.bot){
            var memberData = {
                id: guildMember.id,
                data: {
                    userName: guildMember.user.username,
                    nickName: guildMember.nickname,
                    displayName: guildMember.displayName,
                    joinedAt: guildMember.joinedAt
                }
            }

            guildMembers.push(memberData);
        };
    });
    o[guildKey]['guildMembers'] = guildMembers;
    json = JSON.stringify(o);

我希望数据显示guildMembers对象以及guildKey对象下的数组。但是,JSON仅显示带有空数组的guildKey对象:

{“ guildKey”:[]}

2 个答案:

答案 0 :(得分:1)

您将guildKey设置为数组,然后尝试将其用作对象... 解决方法是:

o[guildKey] = {};

就像在提到的帖子中一样。

答案 1 :(得分:1)

这是因为您正在使用

将键值对分配给数组
o[guildKey]['guildMembers'] = { }; <= o[guildKey]

遍历数组以显示内容时,JavaScript不访问非整数键。您应该将o[guildKey]存储为对象。