在请求的基础上执行JsonConvert.DeserializeObject时排除某些属性

时间:2016-06-30 14:48:27

标签: asp.net .net asp.net-mvc asp.net-mvc-5 json.net

我的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);

1 个答案:

答案 0 :(得分:0)

您正在寻找的是有条件地序列化对象成员。 Json.NET有这个功能。您必须定义一个名为ShouldSerialize {MemberName}的公共方法,返回一个布尔值。

   public bool ShouldSerializeINSERT_YOUR_PROPERTY_NAME_HERE() {return true; // you can use some condition here}