解决asp.net core 3.1/5.0下的webapi默认返回数据为驼峰格式问题

asp.net core 3.1或5.0环境下,默认情况下返回数据对象的时候,对象属性名称被序列化为json时会使用小驼峰格式,比如CompanyName会被序列化为companyName。若客户端和服务器端共用数据类,则在客户端解析的时候,默认情况下由于无法把companyName匹配到CompanyName,因此无法正确解析为数据对象。

(一)解决方法一:

让服务器端不要返回驼峰格式的数据,即取消服务器的默认序列化为驼峰的规则。

需要在服务器程序的Start.cs中进行配置,具体说明如下:

  • 在start.cs文件的ConfigureServices(IServiceCollection services)中,当采用services.AddMvc()服务时,补充AddJsonOptions()如下所示:

     services.AddMvc().AddJsonOptions(options=>{options.JsonSerializerOptions.PropertyNamingPolicy=null;} );

  • 在start.cs文件的ConfigureServices(IServiceCollection services)中,当采用services.AddControllers()服务时,补充AddJsonOptions()如下所示:

      services.AddControllers().AddJsonOptions(options=>options.JsonSerializerOptions.PropertyNamingPolicy=null;});

(二)解决方法二

客户端在解析的时候设置JsonSerializerOptions对象,使客户端可以正确解析带有驼峰格式的Json数据。

         如下所示,在调用JsonSerializer.Deserialize()方法时,传入serializeOptions对象,该serializeOptions对像的PropertyNamingPolicy 属性设置为 JsonNamingPolicy.CamelCase。

          var serializeOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
          var       people = JsonSerializer.Deserialize>(responseResultText, serializeOptions);

这样,Json解析器System.Text.Json.JsonSerializer就能正确解析驼峰格式的Json字符串数据了。

 

需要注意的是,对于老版本的asp.net,做法有所不同。

你可能感兴趣的:(Asp.Net,Core)