【问题标题】:How to parse HTML string using JSON.parse() in JavaScript?如何在 JavaScript 中使用 JSON.parse() 解析 HTML 字符串?
【发布时间】:2014-06-04 06:27:17
【问题描述】:

我有一个 ASP.NET MVC 应用程序将 JSON 字符串返回给 VIEW。

// Parsing the model returned on the VIEW
var jsonString = '@Html.Raw(Model.ToJson())';
var jsonObj = JSON.parse(jsonString);

问题是我无法解析,因为 jsonString 包含“\”和“'”等字符。

//Sample string
{ "description" : "<p>Sample<span style=\"color: #ff6600;\"> Text</span></strong></p>" }

【问题讨论】:

    标签: javascript json asp.net-mvc parsing


    【解决方案1】:

    JSON 是有效的 JavaScript,所以你可以这样做:

    var jsonObj = @Html.Raw(Model.ToJson());
    

    仅供参考,JSON 解析失败的原因是,虽然 "\ 转义以使其成为有效的 JSON,但反斜杠本身需要在字符串中转义才能被 JSON 解析器看到。比较:

    JSON.parse('"quote: \""');  // error: unexpected string
    JSON.parse('"quote: \\""'); // 'quote: "'
    

    这个例子还应该阐明反斜杠发生了什么:

    var unescaped = '\"', escaped = '\\"';
    
    console.log(unescaped, unescaped.length); // '"',  1
    console.log(escaped, escaped.length);     // '\"', 2
    

    【讨论】:

    • 您的回答说明了一切。谢谢!
    【解决方案2】:

    如果你想创建一个有效的 Javascript 字符串,你需要转义反斜杠和撇号:

    var jsonString = '@Html.Raw(Model.ToJson().Replace("\\", "\\\\").Replace("'", "\\'"))';
    

    【讨论】:

    • 为什么投反对票?如果你不解释你认为错的地方是什么,它就无法改进答案。
    【解决方案3】:

    你去吧:

    using Newtonsoft.Json;
    
    JsonConvert.SerializeObject(your html string here);
    

    【讨论】:

    • OP 要求使用 JavaScript 而非 .net 解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多