Когда у меня есть следующие модели:Только Игнорировать аннулирует на десериализации в Json.NET
public class Customer
{
public Customer
{
FirstName = string.Empty;
LastName = string.Empty;
}
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public string FirstName {get;set;}
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public string LastName {get;set;}
}
И что отлично работает, когда я отправляю данные:
// {
// firstName: null,
// lastName: null
// }
public int Post([FromBody]Customer customer)
{
var firstName = customer.FirstName; // <-- value is ""
}
Проблема с этим что если разработчик забывает в этой системе, чтобы инициализировать данные, то структура ответ будет оставить его:
public Customer
{
FirstName = "";
}
// {
// firstName: ''
// }
Ba я не хочу, чтобы значения были нулевыми, но я также не хочу требовать от пользователя добавления необязательного параметра в запрос. Я не могу использовать [Require]
, потому что он не удовлетворяет этой второй части.
Как это установлено, теперь на разработчика есть инициатор для инициализации свойства, иначе он будет опущен. Есть ли способ сделать это, чтобы он игнорировал только десериализацию, а не сериализацию?
Что произойдет, если вы используете 'Include' вместо этого? Документация заявляет, что она исключает ее при десериализации, если она равна нулю, и используется «Игнорировать»: http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_NullValueHandling.htm –
Класс 'Customer' не компилируется. Могу ли я предположить, что внутренний 'public Customer {}' является безпараметрическим конструктором? – dbc
Да, извините, набрал его вручную –