Json Properties Null - ASP.NET核心

时间:2017-05-03 09:45:16

标签: c# asp.net json

我有以下型号

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);
}

所以只有没有下划线的属性才会被持久化,有关如何解决这个问题的想法吗?

2 个答案:

答案 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键