【发布时间】:2019-06-28 22:07:10
【问题描述】:
我正在尝试将我的 PascalCased c# 模型与 WebApi v2 中的 snake_cased JSON 绑定(完整框架,而不是 dot net core)。
这是我的 api:
public class MyApi : ApiController
{
[HttpPost]
public IHttpActionResult DoSomething([FromBody]InputObjectDTO inputObject)
{
database.InsertData(inputObject.FullName, inputObject.TotalPrice)
return Ok();
}
}
这是我的输入对象:
public class InputObjectDTO
{
public string FullName { get; set; }
public int TotalPrice { get; set; }
...
}
我遇到的问题是 JSON 看起来像这样:
{
"full_name": "John Smith",
"total_price": "20.00"
}
我知道我可以使用 JsonProperty 属性:
public class InputObjectDTO
{
[JsonProperty(PropertyName = "full_name")]
public string FullName { get; set; }
[JsonProperty(PropertyName = "total_price")]
public int TotalPrice { get; set; }
}
但是我的 InputObjectDTO 巨大,而且还有很多其他人喜欢它。它有数百个属性都是蛇形的,最好不必为每个属性指定 JsonProperty 属性。我可以让它“自动”工作吗?也许使用自定义模型绑定器或自定义 json 转换器?
【问题讨论】:
-
你无法控制创建 json 的 api?
-
不,无法控制调用 api。
-
json字总是下划线隔开?
-
对于这个问题,我们可以安全地假设我们可以简单地将下划线转换为大写的下一个字母(以及第一个字母)。
-
@Rocklan,你检查过stackoverflow.com/a/28553455/989462 吗?
标签: c# asp.net json.net asp.net-web-api2