You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使JsonConvert.SerializeObject实现JavaScriptSerializer的特殊字符转义效果?

让JsonConvert.SerializeObject实现与JavaScriptSerializer相同的特殊字符转义效果

要实现两者一致的转义效果,你需要通过JsonSerializerSettings配置Json.NET的字符串转义规则,具体操作如下:

  1. 配置序列化参数
    设置StringEscapeHandling为StringEscapeHandling.EscapeHtml,这个选项会让Json.NET将HTML特殊字符转义为对应的Unicode编码(而非默认的HTML实体),和JavaScriptSerializer的行为对齐。

  2. 代码示例

    // 定义待序列化的对象
    var data = new {
        Description = "To test escaping:\r\n<script>alert('sdfg');</script>"
    };
    
    // 配置Json.NET序列化设置
    var settings = new JsonSerializerSettings {
        StringEscapeHandling = StringEscapeHandling.EscapeHtml
    };
    
    // 执行序列化(带格式化输出)
    string json = JsonConvert.SerializeObject(data, Formatting.Indented, settings);
    
  3. 最终序列化结果
    执行后得到的JSON会和JavaScriptSerializer的输出完全一致:

    {
        "Description": "To test escaping:\r\n\u003cscript\u003ealert(\u0027sdfg\u0027);\u003c/script\u003e"
    }
    

原理说明

JavaScriptSerializer默认将HTML特殊字符(如<、>)转义为Unicode编码(<→\u003c),而Json.NET默认会将这些字符转义为HTML实体(<→&lt;)。通过设置StringEscapeHandling.EscapeHtml,可以强制Json.NET采用Unicode转义的方式,从而和JavaScriptSerializer的输出完全匹配。

内容的提问来源于stack exchange,提问作者Brobic Vripiat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:05:21