NullValueHandling用于非空但但没有数据的属性

时间:2016-01-31 21:43:05

标签: c# json json.net poco

在我的POCO对象中,我有一些子对象可能有也可能没有一些数据。但是,它们在对象初始化期间声明,因此它们不是空的。

当我将它们转换为JSON对象时,即使我将NullValueHandling设置为Ignore也会显示它们,因为它们不是null。

当我将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>();
}

在这个例子中,即使我没有这个人的任何地址,在序列化人员类时,我看到addresses: []为空数组。

我真的希望能够忽略所有没有数据的属性。处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

答案似乎很简单: Can Newtonsoft Json.NET skip serializing empty lists?

  

如果您被允许扩展原始类,则添加一个   ShouldSerializePropertyName函数。这应该返回一个   指示是否应该序列化该属性的布尔值   对于当前的类实例。在你的例子中,这可能看起来   像这样(没有经过测试,但你应该得到图片):