[英]How to pass a JSON string as an argument?
假设我有一个非常简单的方法,如下所示:
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的语言设计没有说\\
字符不是用单引号引起来的转义字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.