【问题标题】:Unexpected Character when Parsing .NET-Encoded JSON with JavaScript使用 JavaScript 解析 .NET 编码的 JSON 时出现意外字符
【发布时间】:2014-10-14 02:08:00
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    一切正常。

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

    {"SomeProperty":"A\u0026B"}
    

    【讨论】:

    猜你喜欢
    • 2022-01-01
    • 2023-02-08
    • 1970-01-01
    • 2020-07-22
    • 2016-11-14
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多