我正在开发一个ASP.NET网页应用,我发现Javascript JSON.parse()
方法无法解析.NET Json.Encode()
的JSON输出的问题方法。我的具体问题是&符号(&)(Unicode U + 0026)。
例如,执行此代码:
object SomeObject = new { SomeProperty = "A&B" };
Response.Write(Json.Encode(SomeObject));
在我的.cshtml文件中,在响应中产生以下内容:
{"SomeProperty":"A\u0026B"}
这导致我的JavaScript中出现SyntaxError: Unexpected token u
:
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输出没有影响。
答案 0 :(得分:0)
您的问题必须与您所显示的有所不同:
当我通过我的控制台运行此代码时:
var k = JSON.parse('{"SomeProperty":"A\u0026B"}')
console.log(k);
// Object {SomeProperty: "A&B"}
一切行为都正确。
虽然看起来很奇怪,但这是有效的JSON:
{"SomeProperty":"A\u0026B"}