2015-06-23 61 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方法的行为。 –