我有以下類定義:Newtonsoft JsonConvert.DeserializeObject如何忽略空物體
public class Tag
{
public Guid? TagId { get; set; }
public string TagText { get; set; }
public DateTime CreatedOn { get; set; }
}
public class Wiki
{
public Guid? WikiId { get; set; }
public string WikiText { get; set; }
public string Title { get; set; }
public DateTime CreatedOn { get; set; }
public IEnumerable<Tag> Tags { get; set; }
}
從數據庫中,我得到以下JSON對象:
{
"WikiId": "83981284-0AD3-4420-90AB-15E3BF6BD7B7",
"WikiText": "Text",
"Title": "Title",
"CreatedOn": "2017-08-07T09:16:06.0800000",
"Tags": [{}] // <-- here i would like to ignore the empty Tag object
}
當我現在在做一個JsonConvert.DeserializeObject<Wiki>(json)
我得到一個具有值爲1的標籤列表的Wiki對象TagId: null, TagText: null and CreatedOn: "0001-01-01T00:00:00"
有沒有辦法在反序列化時忽略空的Tag對象?我嘗試了幾個JsonSerializerSettings,但沒有任何幫助。
我不明白你的問題...你想忽略整個對象,還是隻有「標籤」屬性? –
如果您只想忽略「標籤」屬性,那麼您遇到問題,因爲您的類「Wiki」包含屬性「標籤」。如果你真的想忽略這個屬性,你必須聲明兩個「Wiki」類:一個帶有「Tags」屬性,另一個沒有「Tags」屬性。然後你必須檢查JSON字符串是否包含像「[{}]」的字符串。如果它包含「[{}]」,那麼「標籤」是空的,您可以在沒有「標籤」屬性的情況下使用該類進行反序列化。如果要永遠刪除「標籤」,則可以刪除「標籤「你的」維基「類的財產,它應該工作。 –
有沒有可能在解析之前預處理字符串?像:jsonStringFromDb.Replace(「{}」,「」) – Artem