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

How to pass a JSON string as an argument?

本文关键字:参数 字符串 何传递 JSON      更新时间:2023-09-26

假设我有一个非常简单的方法,如下所示:

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

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

我可以避免这个问题,而不手动双转义字符串?为什么不在字符串本身周围使用单个斜杠来避免这个问题?是否可以检索原始输入字符串?

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

您有一个JavaScript字符串字面值。当它被JavaScript编译器解析时,'"将被解释为"

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

我可以避免这个问题,而不手动双转义字符串?

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

为什么不在字符串本身周围使用单个斜杠来避免这个问题?

因为JavaScript的语言设计并没有说'字符不是单引号字符串中的转义字符