Я пытаюсь сериализовать объект POCO в запрос на обновление.
Мои неустановленные значения сериализуются как нулевые, что приводит к их обновлению до нуля.
Если я установил IgnoreNullValues в правда, это решает проблему. Однако тогда нет способа явно обновить атрибут до нуля.
Я думаю, что подход к решению этой проблемы состоит в создании настраиваемого нулевого объекта, который сериализуется в нулевое значение и игнорирует реальные нулевые значения. Это возможно? Как еще я могу решить эту проблему?
Изменить: добавлен пример объекта запроса POCO, который я пытаюсь сериализовать
internal class ContactCreateRequest
{
[JsonPropertyName("contact")]
public ContactEntity Contact { get; set; }
}
internal class ContactEntity
{
public string CompanyName { get; set; }
public DateTime? CreateDateTime { get; set; }
public string CreateId { get; set; }
public string Department { get; set; }
public string DisplayName { get; set; }
public string FirstName { get; set; }
public string GoesBy { get; set; }
public string Id { get; set; }
public string JobTitle { get; set; }
public DateTime? LastEditDateTime { get; set; }
public string LastEditId { get; set; }
public string LastName { get; set; }
public string ParentId { get; set; }
public string Title { get; set; }
public string UpdateAction { get; set; }
}
Я бы хотел следующее
var request = new ContactCreateRequest
{
Contact = new ContactEntity
{
LastName = "Jane",
JobTitle = null,
UpdateAction = "Update"
}
}
{"contact": {"LastName": "Jane", "JobTitle": null, "UpdateAction": "Update"}}
... но, конечно, это не сработает, потому что все неустановленные поля также равны нулю, поэтому они обрабатываются так же, как JobTitle. Вот почему мне интересно, нужно ли мне использовать шаблон нулевого объекта, чтобы определить, что JobTitle должен быть установлен в нуль явно.