今天用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();}
这样就不会有乱码了,全局配置也方便,不用每个地方都要