今天用3.1尝试了一下API返回,代码如下
[Route("get")]
public IActionResult Get(long id) {
return new JsonResult(new User {
Id=1,
Name="张三",
Age=20
});
}
运行返回结果中文名称乱码如下图
这个原因是Json序列化的时候没有对中文进行处理,我们可以通过设置JsonSerializerOptions设置,这里有两种方式一种直接传递设置,代码如下
[Route("get")]
public IActionResult Get(long id) {
var options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
return new JsonResult(new User
{
Id = 1,
Name = "张三",
Age = 20
}, options);
}
还有一种就是在startup里面全局设置,代码如下
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddJsonOptions(cfg =>
{
cfg.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
});
//services.AddControllers();
}
这样就不会有乱码了,全局配置也方便,不用每个地方都要