用JavaScript解析JSON

用JavaScript解析JSON,javascript,json,Javascript,Json,也许有人能帮我朝正确的方向走? 非常感谢你的提示 var credentials = { steam: {}, rpc: {} }; var rawCredentials = JSON.parse(fs.readFileSync("auth.json", { "encoding": "utf8" })); credentials.steam.accountName = rawCredentials.steam.accountName; credentials.steam.password

也许有人能帮我朝正确的方向走? 非常感谢你的提示

 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文件

 {
 "credentials.steam.accountName": "XXX",
 "credentials.steam.password": "XXX",
 }

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

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

编辑:如果您想使用
rawcentidentials.credentials.steam.accountName
您的JSON必须如下所示:

rawCredentials = {
  credentials: {
    steam: {accountName: 'foo', ...}
  }
}

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

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


(或重构JSON)

不知道这是否是问题所在,但auth.JSON中的语法不好:

{
  "credentials.steam.accountName": "XXX",
  "credentials.steam.password": "XXX"
}

设计良好的JSON文档具有与JavaScript配合良好的键,以避免这种混乱。
{
  "credentials.steam.accountName": "XXX",
  "credentials.steam.password": "XXX"
}