Node.js中如何根据用户ID动态访问JSON内的目标字段?
解决Node.js中动态访问Discord用户ID对应JSON字段的问题
你的核心问题在于users是数组类型,每个元素是一个以用户ID为唯一键的对象,所以不能直接通过数组索引或对象键的方式直接定位目标数据,必须先遍历数组找到包含目标USER_ID的元素,再提取对应值。
具体实现代码
假设你已经成功读取并解析了scrumUsers.json,可以用以下代码动态获取目标用户数据:
// 动态获取的Discord用户ID const USER_ID = "你的用户ID"; // 遍历数组,找到包含目标USER_ID作为键的元素 const targetItem = jsonParsed.users.find(item => Object.keys(item).includes(USER_ID)); // 检查是否找到目标用户 if (targetItem) { // 取出该用户的完整数据 const userData = targetItem[USER_ID]; // 访问userID字段 console.log(userData.userID); } else { console.log("未找到对应用户"); }
为什么之前的方法无效
jsonParsed.users.[USER_ID]是语法错误,数组访问不能在[]前加.;jsonParsed.users[USER_ID]会把USER_ID当成数组的索引值,但你的users是存储对象的数组,不是以用户ID为索引的关联数组,所以必然找不到数据。
优化建议(可选)
如果可以修改JSON结构,建议把users从数组改为对象,直接以用户ID作为键,这样访问效率更高,无需遍历:
修改后的scrumUsers.json结构:
{ "users": { "123456": { "userID": "123456", "其他字段": "对应值" }, "789012": { "userID": "789012", "其他字段": "对应值" } } }
此时直接通过jsonParsed.users[USER_ID].userID就能访问目标字段,无需遍历数组。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

