当尝试使用无引号的值设置double时,我试图了解围绕无效json请求的反序列化问题。给定示例控制器
public class TestController : ApiController
{
public IHttpActionResult Post([FromBody] Foo foo)
{
return Ok();
}
}
public class Foo
{
public string StringOne { get; set; }
public double Bah { get; set; }
public string StringTwo { get; set; }
}
带有JSON对象的有效案例,例如:
{
"StringOne": "Lorem",
"Bah" : 1.2,
"StringTwo" : "Ipsum"
}
将按照您的预期构建foo对象,并正确设置所有三个值。以下无效JSON将导致foo设置为null。同样,这似乎是预期的
{
"StringOne": "Lorem",
"Bah" : ThisIsntRight,
"StringTwo" : "Ipsum"
}
但是,当使用以下JSON
{
"StringOne": "Lorem",
"Bah" : Q,
"StringTwo" : "Ipsum"
}
foo被反序列化,Bah的值为0。我希望它的行为类似于第二个示例,并将foo设置为null。我希望了解这种情况下的情况。
注意:这是使用默认的空web.api项目并添加上面的Controller重新创建的。