Строка JSON, содержащая экранированную одинарную кавычку, помечена как недействительная - PullRequest
3 голосов
/ 23 мая 2011

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 ]

9 голосов
/ 23 мая 2011

Вам не нужно избегать ' с обратной косой чертой. Просто убеги от ".

1 голос
/ 23 мая 2011

Нет необходимости экранировать ', поскольку используются двойные кавычки.Это должно быть удалено, и JSON станет действительным.

1 голос
/ 23 мая 2011

Избежать обратной косой черты?

Найдено с http://json.parser.online.fr/

1 голос
/ 23 мая 2011

Проблема заключается в экранировании одинарных кавычек, которые не нужны в JSON, поскольку используются только двойные кавычки.

0 голосов
/ 23 мая 2011

Мне кажется, что JSONLint просто не заботится о \ внутри вашего JSON.Независимо от того, является ли это недопустимым символом для JSON, я не знаю .. Но, как говорит @dogbane, не нужно экранировать ', если вы не используете этот символ для инкапсуляции строк ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...