public class Employee
{
publlic string FullName { get; set; }
[JsonIgnore]
public List<abc> Abc { get; set; }
}
財產
我怎麼能包括財產Abc
反序列化對象時,儘管其上具有JsonIgnore
?包括在具有JsonIgnore
public class Employee
{
publlic string FullName { get; set; }
[JsonIgnore]
public List<abc> Abc { get; set; }
}
財產
我怎麼能包括財產Abc
反序列化對象時,儘管其上具有JsonIgnore
?包括在具有JsonIgnore
如果序列化的數據具有Abc
屬性(我認爲它的確如此,因爲您想反序列化它),那麼創建另一個沒有[JsonIgnore]
屬性的類,並將JSON反序列化爲該類。
只要您使用Employee
類,並且該屬性存在,序列化程序將遵守該屬性。這就是它的目的。
如果它絕對需要是Employee
類,並且您不能刪除該屬性,那麼請將其反序列化爲您的「其他」類並使用它創建Employee
的實例。
var employeeWithAbc = JsonConvert.DeserializeObject<EmployeeWithAbc>(json);
var employee = new Employee {
FullName = employeeWithAbc.FullName,
Abc = employeeWithFullName.Abc }
但也請考慮一下,你可能會看到錯誤的問題。你爲什麼在該屬性上有[JsonIgnore]
?
喜歡部分類的權利?我已經嘗試過這種情況,但它不接受相同的財產。 – PongPagong
不是分類 - 只是另一個類。只要它具有正確的屬性,序列化器就不會在意它是否是一個類或另一個類。它只是要創建一個類的實例並使用JSON中的內容填充它。如果你需要一個'Employee'的實例,那麼你可以把你反序列化的另一個類用來創建一個新的'Employee'實例。 –
我添加了jsonignore,因爲我不想讓子集合對象被檢索 – PongPagong
按照Scott的建議,如果您的Employee
類具有很多屬性,您可以創建單獨的部分類(以避免重複自己並避免您做更多的工作,而不是您需要的)。即你可以有你的基類Employee
如下:
public class Employee
{
public string name
{
get;
set;
}
}
然後,你可以通過創建一個派生類的Employee
創建其他特定串行化處理/ deserialise類然後將繼承屬性/的Employee
屬性:
public class ParseEmployee : Employee
{
public public List<abc> Abc
{
get;
set;
}
}
我明白你的觀點和alex,但是尋找更優雅的方式...... – PongPagong
我覺得這種情況下,你應該重新考慮你的設計。 – Casey