我有以下型号
public class SocioEconomicStudy : BaseModel
{
public string Folio { get; set; }
public string Craft { get; set; }
public string RequestType {get;set;}
}
我发送以下json
{
"folio" : "folio",
"craft" : "craft,
"request_type": "request_type"
}
但是当收到带下划线的属性为null时,我尝试过驼峰式Pascal案例,但只有小写+下划线才是没有下划线的属性。
控制器方法:
[HttpPost]
public void Post([FromBody] SocioEconomicStudy study)
{
var cancellationToken = new CancellationToken();
_logger.LogInformation((study != null).ToString());
_context.SocioEconomicStudyRepository.AddAsync(study, cancellationToken);
}
所以只有没有下划线的属性才会被持久化,有关如何解决这个问题的想法吗?
答案 0 :(得分:2)
对于不遵循命名规则的属性,您可以添加JsonProperty
属性,在您的情况下,您的模型应该如下所示
public class SocioEconomicStudy : BaseModel
{
public string Folio { get; set; }
public string Craft { get; set; }
[JsonProperty("request_type")]
public string RequestType { get; set; }
}
答案 1 :(得分:0)
将以下内容添加到Startup.cs
解决了我的问题
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
});
现在它接受camelCase键