使用JavaScript解析.NET编码的JSON时出现意外的特性

时间:2014-08-20 16:02:57

标签: c# javascript json unicode asp.net-webpages

我正在开发一个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输出没有影响。

1 个答案:

答案 0 :(得分:0)

您的问题必须与您所显示的有所不同:

当我通过我的控制台运行此代码时:

var k = JSON.parse('{"SomeProperty":"A\u0026B"}')
console.log(k);
// Object {SomeProperty: "A&B"}

一切行为都正确。

虽然看起来很奇怪,但这是有效的JSON:

{"SomeProperty":"A\u0026B"}