【发布时间】:2021-01-15 23:09:04
【问题描述】:
我正在尝试使用 discord.js (v12) 中的 JavaScript 解析本地存储在我的机器上的 JSON 文件。这个 JSON 有几个键和值:
{
"name": "Robert",
"rank": "Owner",
"hobbies": [{
"id": 1,
"name": "gaming"
}, {
"id": 2,
"name": "listening to music"
}, {
"id": 3,
"name": "vibing"
}, {
"id": 4,
"name": "driving down the highway"
}],
"roles": [{
"id": 1,
"name": "Founder"
}, {
"id": 2,
"name": "Premium Member"
}]
}
我想在 Discord 上以如下方式发送上述信息:
name: Robert
rank: Owner
hobbies: gaming, listening to music, vibing, driving down the highway
roles: Founder, Premium Member
我也希望这是动态的。这意味着如果将新的键和值添加到当前集合中,我的代码应该会适应。
使用当前代码,这是我的结果:
name: Robert
rank: Owner
hobbies: gaming, listening to music, vibing, driving down the highway
这是我当前的代码:
let noted = ``
var raw = fs.readFileSync(name)
var obj = JSON.parse(raw)
for (var item in obj) {
if (obj[item] instanceof Object) {
for (var i in obj.hobbies) {
noted += `${obj.hobbies[i].name}, `
}
} else {
noted += `${item}: ${obj[item]}\n`
noted += `hobbies: `
}
}
message.channel.send(noted)
变量name是代码顶部的const name = require("./names.json");。
此代码适用于 name、rank 和 hobbies。
roles 如果我希望它可见,必须在 for 循环中手动检查它。我的目标是自动检测任何要添加的新键并将其添加到 noted 变量中。
我已经看到使用map() 完成了类似的操作,但我尝试过但没有得到任何好的结果。这也是相当草率的代码,但我对保持它的清洁不感兴趣。
【问题讨论】:
标签: javascript arrays json parsing nested