JSON不允许:

时间:2012-07-31 17:43:34

标签: javascript

Demo

alert('How do i make abspath==U:\\path?'); //shouldnt i only need one \?
alert(JSON.stringify({abspath:'U:\path'})); //wtf
alert(JSON.stringify({abspath:'U:\\path'}));//wtf2
//alert(JSON.stringify({abspath:'U:/path'}));//different
alert(JSON.stringify({abspath:"U:\path"}));  //even here!?
alert(JSON.stringify({abspath:"U:\\path"})); //fuuuuuuuuuuuuu

4 个答案:

答案 0 :(得分:4)

当脚本输出{"abspath":"U:\\path"}时,这是一个有效的JSON字符串。它不像一样,因为它仍然被转义 - JSON字符串不是人类可读的。

如果要解码该字符串,最终会得到所需的值。在解码之前,您的输出仍然应该被转义。如果未在编码字符串中进行转义,则无法对其进行解码。

请参阅:http://jsfiddle.net/dhzMQ/1/(需要console的可用性)

进一步阅读

答案 1 :(得分:3)

alert( JSON.stringify({abspath:"U:\\path"}) )

这是正确的,您需要JSON格式的\\,因为这就是\的存储方式。

您可以通过解析JSON并查询abspath来判断。

alert(JSON.parse(JSON.stringify({abspath:"U:\\path"})).abspath); 
alert( JSON.stringify({abspath:"U:\\path"}) )

答案 2 :(得分:2)

存储在对象中的字符串:

JSON.parse(JSON.stringify({"abspath": "U:\\path"})).abspath 

...只有一个\

答案 3 :(得分:1)

有效的JSON在键和值

周围有引号
{"abspath":"U:\\path"}

为我工作

JSON.stringify({"abspath":"U:\\path"});