2015-06-23 60 views
2

我對JSON.parse的功能感到困惑。JSON.parse將字符串解析爲字符串

我寫代碼:

dynamicMsgObj = '"rest, no disc"'; 
var jsonObj = {}; 
var isJsonString = function isJsonString(str) { 
    try { 
     jsonObj = JSON.parse(str); 
    } catch (e) { 
     return false; 
    } 
    return true; 
}(dynamicMsgObj); 
console.log(isJsonString);// returns true 
console.log(typeof jsonObj);//returns string 

怎麼會出現這種情況? 以這種方式,我無法確定我是否接收字符串或對象,這是我的主要目標。 請幫忙

回答

2

這是因爲JSON.parse能夠成功解析該輸入,它將解析爲一個字符串和一個字符串是什麼樣的返回結果。

Check out the documentation並查看示例。這其中具體包括:

JSON.parse('"foo"'); // "foo" 

並且關於實現你的目標,你這樣做已經:

if(isJsonString && typeof jsonObj == 'string') 
    // is string 
else 
    // is something else 
+0

是JS類型轉換對象轉換成字符串解析後?但爲什麼「'富'」不以這種方式工作? 「'foo'」是一個簡單的字符串,但''foo''是一個json字符串? –

+0

區別在於「foo」是有效的JSON,而「foo」不是。與JavaScript不同,JSON不允許''''和'''互換。什麼可能是你的困惑,而且很多人認爲JSON只是一種將javascript數據對象表示(或序列化)爲字符串的方法。而字符串就像其他任何其他的數據對象 – musefan

+0

謝謝musefan。我不知道JSON方法的行爲。 –