You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中通过用户名从JSON数组获取对应数值?

问题分析与解决方法

你的核心问题有两个:一是JSON数据结构是数组而非对象,无法直接用键名访问;二是动态键访问的语法错误,acc.${username}不是合法的JavaScript写法。

方案1:适配现有数组结构获取值

你的JSON是由多个单键对象组成的数组,需要先遍历数组找到包含目标用户名的对象,再提取对应数值:

var data = fs.readFileSync('2FA.json');
var acc = JSON.parse(data);

// 找到数组中包含目标用户名的对象
const targetUser = acc.find(item => Object.keys(item)[0] === username);
if (targetUser) {
  // 用方括号语法获取动态键对应的数值
  const userCode = targetUser[username];
  console.log(userCode);
} else {
  console.log("未找到对应用户的数值");
}

方案2:优化JSON结构(更高效推荐)

把JSON改成对象格式,直接用用户名作为键,这样访问效率更高,代码更简洁:
修改后的2FA.json:

{
  "youssefnageeb": 927342,
  "youssefnageeb1": 310686,
  "youssefnageeb2": 105380,
  "youssefnageeb3": 431816,
  "youssefnageeb4": 484728
}

然后直接用方括号语法访问动态键:

var data = fs.readFileSync('2FA.json');
var acc = JSON.parse(data);

// 动态键必须用方括号访问,不能用点语法
console.log(acc[username]);

额外注意事项

  1. 变量loggedIn和username建议用let或const声明,避免全局变量污染;
  2. fs.readFileSync是同步读取,会阻塞事件循环,高并发场景建议改用异步的fs.readFile;
  3. res.render之后的代码仍会执行,若需要在渲染页面后停止后续逻辑,可添加return。

内容的提问来源于stack exchange,提问作者Youssef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:55:32