我正在尝试从包含我的错误消息的JSON中读取,以便在我想要更改我的错误消息所说的内容时,我只是更改JSON而不是潜入我的源代码。一切似乎都很好......
var fs = require('fs')
console.log("Now reading from error messages configuration file...");
var errorMsgs = JSON.parse(fs.readFileSync('config/error_msgs.JSON'));
console.log(errorMsgs)
这就是 errorMsgs.json :
中的内容{
"bad_password" : [
{
"error" : "Incorrect login credentials.",
"details" : "This happens if you either have an incorrect username or password. Please try again with different credentials."
}
],
"missing_fields" : [
{
"error" : "Credentials failed to parse.",
"details" : "This happens when one or more fields are missing (or have illegal characters in them), please try again with different credentials."
}
]
}
当我登录控制台时,errorMsgs
显示正常。当我记录errorMsgs
之一的项目(如bad_password
)时,它也可以正常工作,因为它会显示嵌套在其中的项目。但是,当我尝试检索像errorMsgs.bad_password['error']
这样的特定值时,它会返回undefined。我似乎无法弄明白。我尝试了点符号(errorMsgs.bad_password.error
),它返回undefined。我尝试了上面的方法(errorMsgs.bad_password['error']
),它也返回undefined。要求typeof
errorMsgs
,它返回object
,我假设它不是字符串。首先将值传递给变量然后记录变量也不会执行任何操作。节点是否在运行中将其转换为字符串,导致它返回未定义,或者我只是做错了什么?
答案 0 :(得分:3)
bad_password" : [
{
"error" : "Incorrect login credentials.",
"details" : "This happens if you either have an incorrect username or password. Please try again with different credentials."
}
],
您的嵌套对象包含在数组中。
errorMsgs.bad_password[0]['error']
这就是你要找的东西。只需获取数组的第一个值