我是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”:[]}
答案 0 :(得分:1)
您将guildKey设置为数组,然后尝试将其用作对象... 解决方法是:
o[guildKey] = {};
就像在提到的帖子中一样。
答案 1 :(得分:1)
这是因为您正在使用
将键值对分配给数组o[guildKey]['guildMembers'] = { }; <= o[guildKey]
遍历数组以显示内容时,JavaScript不访问非整数键。您应该将o[guildKey]
存储为对象。