繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM