我的asp.net mvc web应用程序中有以下两个类: -
public class Details4
{
public Details4()
{
this.RESOURCECUSTOMFIELD = new List<RESOURCECUSTOMFIELD>();
}
[HiddenInput(DisplayValue = false)]
public string RESOURCENAME { set; get; }
[Display(Name = "Account Name")]
[Required]
public string ACCOUNTNAME { set; get; }
[Display(Name = "Resource type")]
[Required]
public string RESOURCETYPE { set; get; }
public List<RESOURCECUSTOMFIELD> RESOURCECUSTOMFIELD { set; get; }
}
public class RESOURCECUSTOMFIELD
{
public string CUSTOMLABEL { set; get; }
public string CUSTOMVALUE { set; get; }
}
现在我正在进行以下反序列化,如下所示: -
resourceAccountListInfo = JsonConvert.DeserializeObject<Details4>(json);
但在某些情况下,我不想反序列化整个RESOURCECUSTOMFIELD列表。而在另一方面,我需要取消激活RESOURCECUSTOMFIELD列表。那么有没有办法从反序列化过程中排除一些属性?我知道我可以在课程级别使用[JsonIgnore]
,但这将始终排除相关组件,而我试图找到一种方法只在某些方法上执行此操作,所以有没有办法排除这行代码中的一些属性?? -
resourceAccountListInfo = JsonConvert.DeserializeObject<Details4>(json);
答案 0 :(得分:0)
您正在寻找的是有条件地序列化对象成员。 Json.NET有这个功能。您必须定义一个名为ShouldSerialize {MemberName}的公共方法,返回一个布尔值。
public bool ShouldSerializeINSERT_YOUR_PROPERTY_NAME_HERE() {return true; // you can use some condition here}