Javascript 如何使用Node.js中有空格的JSON键获取JSON对象值
这是我的JSON对象:Javascript 如何使用Node.js中有空格的JSON键获取JSON对象值,javascript,json,node.js,Javascript,Json,Node.js,这是我的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", "Profi
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
值为“配置文件问题”
当我记录我的
aptEventName
变量时,它抛出的值为undefined
。有人能告诉我哪里出了问题吗?您可以使用以下方法获取值:
EVENT_ID["Clear History"]
我想你有点不对劲
req.body.result.parameters.solution
您可以使用以下方法获取值:
EVENT_ID["Clear History"]
我想你有点不对劲
req.body.result.parameters.solution
一种可能的情况:当您再次对字符串值执行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”,“actioncomplete”:false,“parameters”:{“solution”:“Profile Issue”,“hostname”:“LPTP-KDUSHYANT”}
var eventID=result.parameters.solution;
变量事件\u ID={
“启用弹出窗口阻止程序”:“Sol_EnablePopupLocker_IE”,
“禁用脚本调试”:“Sol_DisableScriptDebugger_IE”,
“清除历史”:“Sol_ClearHistory_IE”,
“重置设置”:“重置InternetExplorer\u设置\u SA”,
“配置文件问题”:“修复Outlook配置文件”,
“发送-接收”:“修复\u发送\u接收\u错误\u Outlook\u SA”,
“搜索问题”:“修复\u搜索\u Outlook\u SA”
};
var aptEventName=EVENT_ID[eventID];
console.log(aptEventName)
一种可能的情况:当您再次对字符串值执行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”,“actioncomplete”:false,“parameters”:{“solution”:“Profile Issue”,“hostname”:“LPTP-KDUSHYANT”}
var eventID=result.parameters.solution;
变量事件\u ID={
“启用弹出窗口阻止程序”:“Sol_EnablePopupLocker_IE”,
“禁用脚本调试”:“Sol_DisableScriptDebugger_IE”,
“清除历史”:“Sol_ClearHistory_IE”,
“重置设置”:“重置InternetExplorer\u设置\u SA”,
“配置文件问题”:“修复Outlook配置文件”,
“发送-接收”:“修复\u发送\u接收\u错误\u Outlook\u SA”,
“搜索问题”:“修复\u搜索\u Outlook\u SA”
};
var aptEventName=EVENT_ID[eventID];
console.log(aptEventName)
JSON.stringify
调用字符串将返回引号中的字符串。您不应该对密钥进行JSON编码。由于字符串类型转换在执行对象字段访问时是隐式的,因此您可以按如下方式键入:
var eventID = req.body.result.parameters.solution;
var aptEventName = EVENT_ID[eventID];
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\"";
当然,你的对象中没有带引号的属性。因此,您需要做的是删除stringify位,只需引用对象中的属性
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\"";
当然,你的对象中没有带引号的属性。因此,您需要做的是删除stringify位,只需引用对象中的属性
var eventID = req.body.result.parameters.solution;
var aptEventName = EVENT_ID[eventID];
你能发布你在req.body.result.parameters.solution中得到了什么吗?这是我的request.body.result结构{“source”:“agent”,“resolvedQuery”:“LPTP-KDUSHYANT”,“speech”:“action”:“gethostname”,“actioncomplete”:false,“parameters”:{“solution”:“Profile Issue”,“hostname”:“LPTP-KDUSHYANT”}对于req.body.result.parameters.solution,我将获得一次
事件\u ID[req.body.result.parameters.solution]
它仍然让我无法定义error@Arulvelu但是当我在这里测试它时,它工作得很好。在这里运行代码段。你能发布在req.body.result.parameters.solution中得到什么吗?这是我的request.body.result结构{“source”:“agent”,“resolvedQuery”:“LPTP-KDUSHYANT”,“speech”:“action”:“gethostname”,“actioncomplete”:false,“parameters”:{“solution”:“Profile Issue”,“hostname”:“LPTP-KDUSHYANT”}对于req.body.result.parameters.solution,我正在获取此一次事件的Profile issuery ID[req.body.result.parameters.solution]
它仍然让我无法定义error@Arulvelu但是当我在这里测试它时,它工作得很好。在这里运行代码段它抛出我未定义的代码你能发布在req.body.result.parameters.solution中得到什么吗?它抛出我未定义的代码你能发布在req.body.result.parameters.solution中得到什么吗??