2016-04-26 778 views
-1

編輯:已解決...我需要在這裏使用JSON.stringify()。衛生署。爲什麼JSON.parse給出無效字符

我正在嘗試JSON.parse()響應令牌,並在Internet Explorer中不斷收到「SyntaxError:Invalid character」。 (不知道這個問題是目前在Chrome由於CORS,但是這是一個不同的問題。)對於任何字符串我試圖解析出現

console.log(response.token.isAdmin) 
// false 

console.log(JSON.parse(response.token.isAdmin)) 
// false 

console.log(response.token.tokenValue) 
// 36151b9e-ad0d-49de-a14b-5461489c7065 

console.log(JSON.parse(response.token.tokenValue.toString())) 
// SyntaxError: Invalid character 

同樣的錯誤。如果源不是一個字符串(布爾,整數)解析工作正常。

爲什麼不能正常工作,如何將對象放入字符串中?

+0

作爲結果,您期待什麼從傳遞一個GUID字符串到JSON.parse? –

+0

你確定你的response.token.tokenValue是JSON格式嗎?似乎不是。你的意思是使用JSON.stringify? – James

+0

那麼,理想情況下我想要JSON.parse(令牌)。但是我得到語法錯誤,所以我將其縮小到JSON.parse(token.tokenValue)。我應該能夠得到一個字符串,對吧? –

回答

5

36151b9e-ad0d-49de-a14b-5461489c7065無效的JSON。

JSON.parse('36151b9e-ad0d-49de-a14b-5461489c7065'); // SyntaxError 

也許你的意思是"36151b9e-ad0d-49de-a14b-5461489c7065",這是有效的JSON。

JSON.parse('"36151b9e-ad0d-49de-a14b-5461489c7065"'); 
// 36151b9e-ad0d-49de-a14b-5461489c7065 

或者,也許你想對字符串化JSON,而不是解析

JSON.stringify('36151b9e-ad0d-49de-a14b-5461489c7065'); 
// "36151b9e-ad0d-49de-a14b-5461489c7065" 
+0

補充說,我需要使用JSON.stringify來得到我想要的,我會接受 –

0

看來,你正試圖解析字符串,它是不是有效的JSON。

你可以分析這樣的字符串:

var parseMe = '{ "tokenValue": "36151b9e-ad0d-49de-a14b-5461489c7065" }'; 
var parsed = JSON.parse(parseMe); 

// parsed is now equal to Object {tokenValue: "36151b9e-ad0d-49de-a14b-5461489c7065"} 

但是你不能解析的東西,是不是JSON格式,如:

var parseMe = '36151b9e-ad0d-49de-a14b-5461489c7065'; 
var parsed = JSON.parse(parseMe); 

// Uncaught SyntaxError: Unexpected token b in JSON at position 5 

相反,如果你想獲得一個JSON對象解析爲一個字符串,您可以使用JSON.stringify(),如下所示:

var stringifyMe = { tokenValue: '36151b9e-ad0d-49de-a14b-5461489c7065' }; 
var stringified = JSON.stringify(stringifyMe); 

// stringified is now equal to the string {"tokenValue":"36151b9e-ad0d-49de-a14b-5461489c7065"} 
相關問題