首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JavaScript解析JSON

使用JavaScript解析JSON
EN

Stack Overflow用户
提问于 2014-09-17 03:54:48
回答 3查看 113关注 0票数 3

也许有人可以帮助我走上正确的方向?非常感谢你的任何提示。

代码语言:javascript
运行
复制
 var credentials = { steam: {}, rpc: {} };
 var rawCredentials = JSON.parse(fs.readFileSync("auth.json", { "encoding": "utf8" }));
 credentials.steam.accountName = rawCredentials.steam.accountName;
 credentials.steam.password = rawCredentials.steam.password;
 credentials.steam.shaSentryfile = new Buffer(rawCredentials.steam.shaSentryfile, "hex");
 credentials.rpc.username = rawCredentials.rpc.username;
 credentials.rpc.password = rawCredentials.rpc.password;

auth.json文件

代码语言:javascript
运行
复制
 {
 "credentials.steam.accountName": "XXX",
 "credentials.steam.password": "XXX",
 }

无法读取未定义的属性“”accountName“”

EN

回答 3

Stack Overflow用户

发布于 2014-09-17 03:57:29

您的属性的键实际上是"credentials.steam.accountName“。您不能使用点符号来遍历对象"credentials“或"steam",因为它们不是对象。要访问这些值,请使用:rawCredentials['credentials.steam.accountName']

编辑:如果你想使用rawCredentials.credentials.steam.accountName,你的JSON必须看起来像这样:

代码语言:javascript
运行
复制
rawCredentials = {
  credentials: {
    steam: {accountName: 'foo', ...}
  }
}
票数 6
EN

Stack Overflow用户

发布于 2014-09-17 03:58:24

这些是JSON文件中包含点的完整属性名,而不是实际的嵌套对象。

此外,您还忘记了.credentials部分。相反,请使用bracket notation

代码语言:javascript
运行
复制
credentials.steam.accountName = rawCredentials["credentials.steam.accountName"];
credentials.steam.password = rawCredentials["credentials.steam.password"];

(或者重构您的JSON)

票数 3
EN

Stack Overflow用户

发布于 2014-09-17 04:00:12

不知道这是否是问题所在,但是您的auth.json中有一个糟糕的语法:

代码语言:javascript
运行
复制
{
  "credentials.steam.accountName": "XXX",
  "credentials.steam.password": "XXX"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25877334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档