如何使用System.Text.Json实现JSON字符串转义 替代Newtonsoft.Json方案
实现方案
你可以直接使用System.Text.Json.JsonSerializer.Serialize()方法序列化待转义的字符串,即可实现和Newtonsoft中JsonConvert.ToString()完全等效的JSON字符串转义效果。
替换代码示例
using System.Text.Json; using System.Text.Encodings.Web; // 原有序列化逻辑 var unescapedString = JsonSerializer.Serialize(MyObject); // 方式1:使用System.Text.Json默认转义规则 // 会自动转义HTML敏感字符、非ASCII字符、JSON特殊字符,输出自带外层双引号 var escapedJsonString = JsonSerializer.Serialize(unescapedString); // 方式2:对齐Newtonsoft默认转义规则 // 不额外转义非ASCII字符、HTML敏感字符,仅转义JSON规范要求的特殊字符 var serializeOptions = new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; var escapedJsonString = JsonSerializer.Serialize(unescapedString, serializeOptions);
补充说明
如果你不需要单独获取未转义的序列化结果,也可以直接在首次序列化MyObject时就配置对应转义规则,减少重复序列化的性能开销。
内容的提问来源于stack exchange,提问作者developer9969
相关产品推荐
相关产品推荐

