我的问题是我想将一个 json 对象反序列化为一个 C# 对象,但诀窍是 C# 对象包含 List<抽象类> 并且这个抽象类是另外 10 个类的超类。
public sealed class SearchAPIResult
{
public string Status;
public SearchAPIQuery Query;
public SearchResults Result;
public SearchAPIResult()
{
}
public SearchAPIResult(string status)
{
Status = status;
}
}
Run Code Online (Sandbox Code Playgroud)
并且SearchAPIResult是:
public sealed class SearchResults
{
public string TextAnswer;
public List<APIResultWidget> Items;
public SearchResults()
{
Items = new List<APIResultWidget>();
}
}
Run Code Online (Sandbox Code Playgroud)
这里的对象APIResultWidget是一个抽象类,它继承了大约 10 个类。
问题是 JSON 对象没有自动(如 JSON.NET 中的 typeNameHandling)来引导反序列化器转换到 10 个派生类中的哪个对象。相反,对象由两个字段标记:Type 和 SubType... 如下所示
{
"Status": "OK", …Run Code Online (Sandbox Code Playgroud)