如何从json文件获取值无法读取'number'错误的属性

时间:2020-02-05 20:38:57

标签: node.js json discord.js

使用

后,这是我的json文件
let data = await fs.readFileSync ("./data/json/serversettings.json","utf8", function(err) {
        if (err) throw err; 
    })
console.log(data)

我得到答复

    {
  "guilds": {
    "627832600865800222": {
      "guildautorole": "default",
      "welcomeChannelID": "000",
      "logchannel": "default",
      "guildMemberCount": 7,
      "guildOwnerID": "348832732647784460",
      "voicelogchannel": "default",
      "guildOwner": "Ethical Hacker",
      "prefix": ",",
      "guildID": "627832600865800222",
      "guildName": "Bot testing server"
    },
    "637301291068030997": {
      "prefix": ".",
      "guildID": "637301291068030997",
      "guildName": "test server 3",
      "guildautorole": "default",
      "welcomeChannelID": "default",
      "logchannel": "default",
      "guildMemberCount": 4,
      "guildOwnerID": "348832732647784460",
      "voicelogchannel": "default",
      "guildOwner": "Ethical Hacker"
    },
    "GUqGqFanJuN7cRJx4S2w": {}
  }
}

我可以从welcomeChannelID到名为627832600865800222的变量中获取ID的值

第二次,所以我错了

console.log(data['guilds'][gdata.guild.id]) 

我遇到错误,无法读取未定义的属性'627832600865800222'

我该怎么做才能使其作为字符串传递,或者如何在"welcomeChannelID": "000",中获得000console.log

我认为它可能看起来像这样

console.log(data['guilds'][gdata.guild.id][welcomeChannelID])  //error in [gdata.guild.id] box

输出:

000

1 个答案:

答案 0 :(得分:0)

data类型为string,因此您需要先对其进行解析,然后才能尝试将其作为对象进行访问。

let data = await fs.readFileSync ("./data/json/serversettings.json","utf8", function(err) {
        if (err) throw err; 
    });
data = JSON.parse(data);
let ID = data['guilds'][gdata.guild.id]['welcomeChannelID'];
console.log(ID);