Я разрабатываю приложение веб-страниц ASP.NET и вижу проблему, когда метод Javascript JSON.parse()
не может проанализировать выходные данные JSON с помощью метода .NET Json.Encode()
. Моя конкретная проблема связана с символом амперсанда (&) (Unicode U+0026).
Например, выполнение этого кода:
object SomeObject = new { SomeProperty = "A&B" };
Response.Write(Json.Encode(SomeObject));
В моем файле .cshtml в ответе появляется следующее содержимое:
{"SomeProperty":"A\u0026B"}
Что приводит к SyntaxError: Unexpected token u
в моем JavaScript:
function SomeCallback(aRequest) {
if (aRequest.status === 200) {
var lResponseJSON = JSON.parse(aRequest.Response); // Error on this line
}
}
Как я могу заставить кодировку .NET JSON и декодирование JS JSON работать хорошо, когда задействованы специальные символы?
(Предпочтительно, за исключением ручного просмотра строкового JSON перед его анализом для замены кодировок Unicode)
РЕДАКТИРОВАТЬ: стоит упомянуть, что использование Json.Write(SomeObject, Response.Output)
вместо Response.Write(Json.Encode(SomeObject))
не влияет на вывод JSON.