C#中JsonPrettify处理后属性值显示异常求助
解决C#中JSON格式化时转义字符异常显示的问题
问题出在序列化时的编码配置,默认编码器会将双引号(")、小于号(<)等字符转义为Unicode序列,你需要正确配置JavaScriptEncoder.UnsafeRelaxedJsonEscaping来保留原始转义格式,同时确保引用对应的命名空间。
修改后的代码如下:
using System.Text.Encodings.Web; // 必须引用此命名空间 using System.Text.Json; public static string JsonPrettify(this string json) { using var jDoc = JsonDocument.Parse(json); return JsonSerializer.Serialize(jDoc, new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping // 启用宽松编码规则 }); }
说明
JavaScriptEncoder.UnsafeRelaxedJsonEscaping会跳过对ASCII可打印字符的Unicode转义,包括双引号、小于号这类字符,序列化后会保留原始的\" :<格式,而非转成\u0022:\u003C。- 必须引用
System.Text.Encodings.Web命名空间才能使用该编码器。
测试修改后的方法,处理你提供的原始JSON,输出结果将恢复为:
{ "CompanyCode": "\" :<" }
内容的提问来源于stack exchange,提问作者Fast Chip
相关产品推荐
相关产品推荐

