我正在尝试将 POCO 对象序列化为更新请求。
我未设置的值被序列化为 null,这导致它们被更新为 null。
如果我将 IgnoreNullValues 设置为 true,则可以解决问题。但是,没有办法将属性显式更新为 null。
我在想解决这个问题的方法是创建一个自定义的 null 对象,该对象序列化为 null 并忽略真正的 null 值。这可能吗?我还能如何解决这个问题?
编辑:添加了我正在尝试序列化的 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 应该显式设置为空。