包含标记为无效的转义单引号的JSON字符串

时间:2011-05-23 11:34:06

标签: javascript json vbscript

JSONLint说以下是无效的JSON:

[{
"value": 71,
"label": "123 Foobar \'eha-Kauai, Hawaii, United States"
},
{
"value": 75,
"label": "456 Foobar \'elima-Kauai, Hawaii, United States"
}]

然而这有效:

var foo = [{
"value": 71,
"label": "123 Foobar \'eha-Kauai, Hawaii, United States"
},
{
"value": 75,
"label": "456 Foobar \'elima-Kauai, Hawaii, 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")

5 个答案:

答案 0 :(得分:9)

您不需要使用反斜杠转义'。逃避"

答案 1 :(得分:1)

问题是单引号标记的转义,这在JSON中是不必要的,因为只使用了双引号。

答案 2 :(得分:1)

逃避反斜杠?

找到http://json.parser.online.fr/

答案 3 :(得分:1)

由于使用双引号,因此无需转义'。需要删除它并且JSON变为有效。

答案 4 :(得分:0)

在我看来,JSONLint对JSON中的\并不太在意。不管它是否是JSON的无效字符,我不知道..但正如@dogbane所说,除非你使用该字符串进行字符串封装,否则无需转义'