2014-03-27 89 views
0

內對象字面值調用console.log(JSON.stringify(req.params))後,我得到以下結構的字符串:如何獲得使用JavaScript

{"q":"{\"email\":\"[email protected]\"}","apiKey":"1234"} 

隨着console.log(req.params.q),我有這樣的結果:{"email":"[email protected]"}。 但我得到「未定義」如果我嘗試用console.log(req.params.q.email)console.log(req.params.q["email"]) 什麼是獲取價值的最佳方法來查看電子郵件的價值?

+2

'req.params.q'是一個字符串,而不是一個對象。不知道爲什麼它是一個字符串,但你需要做'var q = JSON.parse(req.params.q);'然後你可以做'q.email'。 –

+1

所以在訪問它之前使用'JSON.parse()' –

+0

當然,正確的解決方案是修復生成數據的腳本,假設你有控制權。 –

回答

1

它看起來像req.params.q是一個字符串:"{\"email\":\"[email protected]\"}"

你需要解析JSON然後取值。

req = {params: {"q":"{\"email\":\"[email protected]\"}","apiKey":"1234"}} 
JSON.parse(req.params.q) 
> Object {email: "[email protected]"} 
JSON.parse(req.params.q).email 
> "[email protected]" 
+0

感謝您的支票!看起來它正在交換一分鐘 –

+0

兩個答案都很好,thx!反斜槓應該引起我的注意。 – Cris69

2

您必須JSON.parse內心的一部分:

var test = {"q":"{\"email\":\"[email protected]\"}","apiKey":"1234"}; 
alert(JSON.parse(test.q).email); 

警報[email protected]

爲什麼?

因爲test持有的JavaScript對象,其中q持有一個字符串,因此,如果你想從一個字符串中提取的JSON值必須解析該字符串。