我剛剛花了很長時間試圖完成這項工作,所以我會在這裏發帖,以防其他人與我犯相同的錯誤。爲什麼我的抽象JSON對象不被解析?
所以,複製的情況,我只是有幾類基本繼承:
public abstract class Foo
{
public string Name { get; set; }
}
public class Bar : Foo
{
public int SomethingSpecial { get; set; }
}
public class Baz : Foo
{
public string SomethingMundane { get; set; }
}
現在,我希望能夠把一個JSON字符串,並解析回一個具體實施Foo
,事先不知道json代表了哪種類型。 JSON.Net處理此,通過使用$類型變量來查找對象的類型:
{
"$type": "MyNamespace.Bar",
"Name": "Resources",
"SomethingSpecial": 42
}
當反序列化對象,你可能想指定類型處理選項和定製綁定,在JsonSerializerSettings中,但這是可選的。
我遇到的問題是,當從web客戶端發佈json時,該對象沒有被反序列化,而是引發異常,或者在ASP.Net中的POST參數的情況下,該值只是進來作爲null
。