Asp.Net Web Api 2 JSON десериализация синтаксический анализ без кавычек - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь понять причину десериализации вокруг недопустимого запроса json, когда пытаюсь установить значение типа double со значениями без кавычек.На примере контроллера

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 равным нулю.Я надеялся понять, что происходит в этом случае.

Примечание: это было воссоздано с пустым проектом web.api по умолчанию и добавлением вышеуказанного контроллера.

...