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'值。 –