在我的POCO对象中,我有一些子对象,其中可能有也可能没有一些数据。但是,它们是在对象初始化期间声明的,因此它们不为 null。
当我将它们转换为 JSON 对象时,即使我将 NullValueHandling 设置为忽略,它们也会显示,因为它们不是空的。
处理它们的最佳方法是什么,以便在我将 POCO 对象序列化为 JSON 时它们不会出现?
下面是 POCO 对象的示例:
public class Person
{
[JsonProperty("id")]
public Guid Id { get; set; }
[JsonProperty("firstName")]
public string FirstName { get; set; }
[JsonProperty("lastName")]
public string LastName { get; set; }
[JsonProperty("addresses", NullValueHandling = NullValueHandling.Ignore)]
public List<Address> Addresses { get; set; } = new List<Address>();
}
在此示例中,即使我没有此人的任何地址,在序列化 person 类时,我也会看到addresses: []
为空数组。
我真的希望能够忽略所有没有数据的属性。处理此问题的最佳方法是什么?
答案似乎很简单:Newtonsoft Json.NET 可以跳过序列化空列表吗?
如果允许您扩展原始类,则添加一个 ShouldSerializePropertyName 函数。这应该返回一个 指示是否应序列化该属性的布尔值 对于类的当前实例。在您的示例中,这可能看起来 像这样(未经测试,但你应该得到图片):