1
我已经设法通过在我的Startup.cs
中使用以下内容,将api 响应与snake_case
命名约定串行化。这样它返回我的DTO的蛇作为JSON的外壳。如何正确设置用于dotnet core api的蛇情况JSON?
services
.AddMvc()
.AddJsonOptions(x =>
{
x.SerializerSettings.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
});
这是我想要的一半。但是,当我发布以蛇为基础的JSON时,请参阅下面的示例,它不会将值绑定到我的DTO上的api。例如,UserProfile
阵列和CreatedOn
,ModifiedOn
没有得到任何值。
{
"user_profiles": [
{
"id": 1,
"created_on": "2017-02-08T19:54:59.370Z",
"modified_on": "2017-02-18T14:10:42.248Z",
"email": "[email protected]",
"username": "my_username"
}
],
"id": 1,
"created_on": "2017-02-08T19:50:31.690Z",
"modified_on": 2017-02-08T19:50:31.690Z,
"name": "My Company Name"
}
什么是设置它,这样,当发送到API 和发送蛇情况下,从API请求时,API处理蛇套管JSON的正确方法?
我的DTO的
public class CompanyDto
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
public string Name { get; set; }
public IEnumerable<UserProfileDto> UserProfiles { get; set; }
}
public class UserProfileDto
{
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
public string Email { get; set; }
public string Username { get; set; }
}
控制器上的我的PUT动作
[HttpPut("{id}")]
public async Task<IActionResult> Put(int id, [FromBody]CompanyDto value)
{
// Body
}
编辑:
好吧,原来,我错过了在我张贴的JSON的一些值API。他们被api所要求,但没有得到任何错误或某些东西。
所以要回答这个问题,根据我的经验,使用以下代码就足够了蛇的JSON输出/输入为dotnet核心api。相反,它只是让预期的模型null
感叹。
services
.AddMvc()
.AddJsonOptions(x =>
{
x.SerializerSettings.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
});
好抓,即使它是复制/粘贴错误。但是,由于你的答案使我找到了解决问题的途径(请参阅编辑),我会接受它。这是我忘记发布的必需属性的一种情况,在这种情况下缺少'modified_on'值。 –