System.Text.Json.JsonSerializer.Serialize(ruleDescription) 中文显示\u809D\u764C\u4E13\u75C5\u961F\u5217\u6570\u636E\u5E93\u4E0E\u591A\u7EC4\u5B66\u751F\u7269\u5168\u606F\u5E93\u7684\u5EFA\u7ACB
在使用 System.Text.Json.JsonSerializer.Serialize 方法将对象转换成 JSON 格式时,会自动进行 Unicode 编码,这是 JSON 格式的规定。如果需要在 JSON 中显示中文字符,可以通过指定 JsonSerializerOptions.Encoder 属性为 JavaScriptEncoder.Create(UnicodeRanges.All) 来实现,如下所示:
var options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
}
string jsonStr = JsonSerializer.Serialize(ruleDescription, options);
这样就可以将 JSON 字符串中的 Unicode 编码还原成中文字符进行显示。
全局解决此类问题
你可以在 JsonSerializerOptions 中设置 Encoder 属性为 JavaScriptEncoder.Create(UnicodeRanges.All) 来实现全局的 JSON 序列化设置。
以下是代码示例:
using System.Text.Encodings.Web;
using System.Text.Json;
// 全局配置 Json 序列化
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
JsonSerializerOptions.Default = options;
上述代码中,我们创建了一个 JsonSerializerOptions 对象,并设置了 Encoder 属性为 JavaScriptEncoder.Create(UnicodeRanges.All),表示在序列化时将所有 Unicode 字符进行转义。
接着,将该 JsonSerializerOptions 对象设置为全局默认值即可,这样就能够全局解决 System.Text.Json.JsonSerializer.Serialize 对中文进行 Unicode 转义的问题。