我一直在试图找出一种方法来忽略某些对象被基于某些条件序列化。我所能找到的就是如何使用ShouldSerialize *方法忽略对象的属性,而不是如何忽略整个对象。JSON.NET中的条件对象序列化
下面是一个解释我的情况的例子。一个公司可以有多个员工,员工可以是现任的也可以是非现任的。
Public Class Company
Public Property Name As String
Public Property Employees As List(Of Employee)
End Class
Public Class Employee
Public Property FirstName As List(Of Name)
Public Property LastName As List(Of Name)
Public Property Current As Boolean
End Class
我希望能够忽略/排除非当前雇员被序列化为json。
我现在能想到的唯一方法是将当前和非现任员工分为两个属性,以便我可以使用<JsonIgnoreAttribute()>
作为非当前员工。
如:
Public Class Company
Public Property Name As String
Public Property CurrentEmployees As List(Of Employee)
<JsonIgnoreAttribute()>
Public Property PastEmployees As List(Of Employee)
End Class
Public Class Employee
Public Property FirstName As List(Of Name)
Public Property LastName As List(Of Name)
Public Property Current As Boolean
End Class
但是我想避免这种情况,因为我有很多的这些东西在我的真实情况,所以我不希望所有的名单分成两个,这将需要广泛的代码修改。如果可以在json序列化方面完成,那将会很好。
任何帮助表示赞赏。谢谢!
这不是“有条件的序列化”,这是有选择地克隆一个对象的成员,然后序列化整个克隆。您可以使用LINQ轻松完成此操作。我会说原来的问题是误导性的 –