在 ASP.NET Core Web API 中,可以使用 System.Text.Json 命名空间提供的 JsonSerializer 进行序列化和反序列化 Json 数据。默认情况下,它会对响应中的 Json 数据进行 Unicode 编码,以确保数据传输的可靠性和安全性。
但是,有时候我们需要直接返回 Json 响应给客户端,而不需要进行额外的编码,此时可以通过以下代码进行配置,以禁用 Unicode 编码:
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
});
在上述代码中,我们将 JsonSerializerOptions.Encoder 属性设置为 System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,以禁用 Unicode 编码。
此外,我们还可以通过以下代码将默认的 JsonSerializer 替换为 Newtonsoft.Json,以实现更高级的 Json 序列化和反序列化功能:
services.AddControllers().AddNewtonsoftJson();
这样,在响应中返回的 Json 数据就不会被编码了。