这是我的JSON对象:
var EVENT_ID = {
"Enable Popup Blocker": "Sol_EnablePopupBlocker_IE",
"Disable Script Debug": "Sol_DisableScriptDebugger_IE",
"Clear History": "Sol_ClearHistory_IE",
"Reset Settings": "Reset_InternetExplorer_Settings_SA",
"Profile Issue": "Fix_Outlook_Profile_SA",
"Send Receive": "Fix_Send_Receive_Errors_Outlook_SA",
"Search Issue": "Fix_Search_Outlook_SA"
};
我正在尝试使用键访问 JSON 对象值,该值具有如下所示的空格
var eventID = JSON.stringify(req.body.result.parameters.solution);
var aptEventName = EVENT_ID[eventID];
eventID
值"Profile Issue"
当我记录我的aptEventName
变量时,它会抛出undefined
的值。谁能告诉我,我哪里出错了?
一种可能的情况:当您再次对字符串值执行JSON.stringify()
时,可能会发生这种情况。这就是为什么它将值抛出为未定义,所以不要在这里使用不必要的JSON.stringify()
var response = "response"
JSON.stringify(response)
""response""
^^ ^^ see extra quotes here
var result = { "source": "agent", "resolvedQuery": "LPTP-KDUSHYANT", "speech": "", "action": "gethostname", "actionIncomplete": false, "parameters": { "solution": "Profile Issue", "hostname": "LPTP-KDUSHYANT" }}
var eventID = result.parameters.solution;
var EVENT_ID = {
"Enable Popup Blocker": "Sol_EnablePopupBlocker_IE",
"Disable Script Debug": "Sol_DisableScriptDebugger_IE",
"Clear History": "Sol_ClearHistory_IE",
"Reset Settings": "Reset_InternetExplorer_Settings_SA",
"Profile Issue": "Fix_Outlook_Profile_SA",
"Send Receive": "Fix_Send_Receive_Errors_Outlook_SA",
"Search Issue": "Fix_Search_Outlook_SA"
};
var aptEventName = EVENT_ID[eventID];
console.log(aptEventName)
JSON.stringify
字符串调用将返回带引号的字符串。不应对密钥进行 JSON 编码。由于字符串类型转换在执行对象字段访问时是隐式的,因此您可以键入它:
var eventID = req.body.result.parameters.solution;
var aptEventName = EVENT_ID[eventID];
你不应该使用stringify,它正在获取一个字符串并将该字符串转换为JSON。
var eventID = JSON.stringify(req.body.result.parameters.solution);
当你这样做时,你的字符串将是
var eventID = ""Profile Issue"";
所以当然你的对象中没有带引号的属性。因此,您需要做的是删除字符串位,只需引用对象中的属性即可。
var eventID = req.body.result.parameters.solution;
var aptEventName = EVENT_ID[eventID];
您可以使用以下方法获取值:
EVENT_ID["Clear History"]
我想你对req.body.result.parameters.solution
.