包含具有JsonIgnore的属性

时间:2016-05-03 18:11:49

标签: c# model-view-controller

public class Employee
{
    publlic string FullName { get; set; }
    [JsonIgnore]
    public List<abc> Abc { get; set; }
}

如果对象反序列化,我怎么能包含属性Abc,尽管它上面有JsonIgnore

2 个答案:

答案 0 :(得分:3)

如果序列化数据具有Abc属性(我假设它已经存在,因为您要对其进行反序列化),则创建另一个没有[JsonIgnore]属性的类,并将JSON反序列化为该类。

只要您使用Employee类并且该属性存在,序列化程序就会遵循该属性。这就是它的用途。

如果它绝对需要是Employee课程而您无法删除该属性,那么只需将其反序列化为您的&#34;其他&#34; class并使用它来创建Employee的实例。

var employeeWithAbc = JsonConvert.DeserializeObject<EmployeeWithAbc>(json);
var employee = new Employee {
    FullName = employeeWithAbc.FullName, 
    Abc = employeeWithFullName.Abc }

但也请考虑您可能正在查看错误的问题。为什么你对该房产有[JsonIgnore]

答案 1 :(得分:0)

根据Scott的建议,如果你的Employee类有许多属性,你可以创建单独的部分类(以避免重复自己并避免你做更多的工作而不是你需要)。即您可以按如下方式设置基类Employee

public class Employee
{
    public string name
    {
        get;
        set;
    }
}

然后您可以通过创建Employee的派生类来创建其他特定的序列化/反序列化类,然后继承Employee的属性/属性:

public class ParseEmployee : Employee
{
    public public List<abc> Abc
    {
        get;
        set;
    }
}