如何将JSON字符串作为参数传递?

时间:2015-09-25 12:44:21

标签: javascript json

让我们说我有一个相当简单的方法,如下所示:

var foo = function (str) {
    console.log(str); //{"Field Name": "Value With "Escaped" Content"}
    JSON.parse(str); //fails
} 

foo('{"Field Name": "Value With \"Escaped\" Content"}');

传递的参数具有有意的反斜杠(字符串来自第三方),但是,一旦将字符串传递给函数,它们就会缺失(请参阅内联注释)。

如果不手动双重转义字符串,我可以避免此问题吗?为什么不在字符串周围使用单斜线避免这个问题?是否可以检索原始输入字符串?

1 个答案:

答案 0 :(得分:2)

\个字符是JSON转义字符,但它们也是JavaScript转义字符。

您有一个JavaScript字符串文字。当JavaScript编译器对其进行解析时,\"将被解释为"

JSON解析器因此被传递"而不是\"

  

如果不手动双重转义字符串,我可以避免此问题吗?

字符串需要双重转义。您可能需要或不必手动执行此操作,具体取决于字符串的来源。

  

为什么不在字符串周围使用单斜线避免此问题?

因为JavaScript的语言设计并未说明\字符不是单引号字符串中的转义字符。