如何解决包含转义的单引号的JSON字符串被标记为无效
|| JSONLint说以下是无效的JSON:[{
\"value\": 71,\"label\": \"123 Foobar \\\'eha-Kauai,Hawaii,United States\"
},{
\"value\": 75,\"label\": \"456 Foobar \\\'elima-Kauai,United States\"
}]
但这有效:
var foo = [{
\"value\": 71,United States\"
}];
console.log(foo.length); // returns 2
注意:字符串是由一个函数生成的,可以通过以下方式使用:
<script>
var foo = \'<%= vbs_JSONEncode(\"Hello World\") %>\'; // being inconsistent
var bar = \"<%= vbs_JSONEncode(str_Hello_Msg) %>\"; // with the quotes
</script>
或者简单地:
Response.ContentType = \"application/json\"
Response.Write vbs_JSONEncode(\"Hello World\")
解决方法
您不需要用反斜杠使ѭ4逃脱。逃脱
\"
。
,问题是转义单引号,这在JSON中是不必要的,因为仅使用双引号。
,转义反斜杠?
通过http://json.parser.online.fr/找到
,因为使用了双引号,所以不需要转义\。需要删除它,并且JSON变为有效。
,在我看来,JSONLint只是不太在乎JSON中的\\
。我不知道它是否是JSON的无效字符。但是正如@dogbane所说,除非您使用该char进行字符串封装,否则无需转义\'
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。