我有一个POST端点(ASP.NET Web API 2.2(,它需要一个定义的json。
[HttpPost()]
public async Task<IActionResult> SetProcessStart([FromBody]MyDataWrapper myDataWrapper)
MyDataWrapper json包括例如三个参数。
{
"name": "Heinz",
"color": "green",
"hat": false
}
两个参数颜色和帽子是可选的。但是当用户传递它时:
{
"name": "Heinz"
}
myDataWrapper 为空。
我试过了:
public async Task<IActionResult> SetProcessStart([FromBody]object myObject)
MyDataWrapper myDataWrapper = (MyDataWrapper)object;
但它不起作用。
如何采用短 json 并将其转换为我的 MyDataWrapper 对象?
public class MyDataWrapper
{
[JsonProperty("name", Required = Required.Always)]
public string Name { get; set; }
[JsonProperty("color", Required = Required.AllowNull)]
public string Color { get; set; }
[JsonProperty("hat", Required = Required.AllowNull)]
public bool Hat { get; set; }
}
来自Required.AllowNull
的文档(强调我的(:
该属性必须在 JSON 中定义,但可以是空值。
这就是它失败的原因,因为您已经明确表示需要提供属性。您应该切换到以下任一:
-
Required.Default
- 该属性不是必需的。这是默认值,这意味着您可以完全删除Required
属性。 -
Required.DisallowNull
- 该属性不是必需的,但它不能为 null 值