Неправильно десериализуется integer в Json.Net
У меня есть простое тело запроса, состоящее из следующего json:
{
"code": 11,
"name": "abc"
}
Во время отладки при обработке POST-запроса в качестве аргумента поступает правильная строка, однако после использования JsonConvert.DeserializeObject<FacultyJson>(body.ToString()) поле code класса FacultyJson становится равным 0, при этом при десериализации без указания типа поле code становится равным вообще null.
Код метода:
public IActionResult AddFaculty(JsonElement body)
{
var debug = body.ToString();
FacultyJson faculty = JsonConvert.DeserializeObject<FacultyJson>(body.ToString());
DatabaseWorker.AddFaculty(faculty.Name, faculty.Code);
return Ok();
}
Вот так выглядит FacultyJson (сам он вложен в другой класс):
private class FacultyJson
{
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public int Code { get; set; }
}
Как видно, перепробовал все что мог, и публичные сеттеры (хотя изначально просто поля были), и атрибуты JsonProperty. Кто-нибудь знает, в чем может быть проблема?
Ответы (1 шт):
В итоге исправилось изменением названий полей в FacultyJson и соответствующем анонимном типе внутри angular с name и code на facultyName и facultyCode:
private class FacultyJson
{
[JsonProperty]
public string FacultyName { get; set; }
[JsonProperty]
public int FacultyCode { get; set; }
}