使用Asp.Net Core 3.1 的Web Api 返回数据发现字段名称被转换为驼峰格式,比如下面的类:
public class Person
{
[JsonProperty(PropertyName = "ID")]
public int ID { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
public int Age { get; set; }
public DateTime JoinDate { get; set; }
public bool Married { get; set; }
public int Sex { get; set; }
}
简单的Web Api的代码如下:
[HttpGet]
public ActionResult<IEnumerable<Person>> Get()
{
return DemoData.Values.ToList();
}
返回的数据是这样的:
图片.png
这个问题在以前的版本也遇到过,解决的方法是增加如下设置:
services.AddMvc()
.AddJsonOptions(opt =>
{
opt.SerializerSettings.ContractResolver = new DefaultContractResolver();//json字符串大小写原样输出
});
然而在Asp.Net Core 3.1版本下,这段代码出现错误,网上搜了一下,有人在rc版本使用AddNewtonsoftJson替换解决了这个问题,可是在我这里依然不行,最后发现下面的设置起作用:
services.AddMvc()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null)
不得不吐槽一下.Net Core的发展,版本之间的变化太多,给人感觉一致处在不稳定的开发状态,.Net Framework虽然老一些,但稳定性和兼容性要好很多。