簡體   English   中英

如何使用Node.js中帶有空格的JSON密鑰獲取JSON對象值

[英]How to get JSON object values with the JSON keys having spaces in 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",
  "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() ,可能會發生這種情況。 這就是為什么它會將值拋出為undefined ,所以請不要在這里使用不必要的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感到有些req.body.result.parameters.solution

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM