我有一个看起来像这样的 json 结构:
"list":[
{
"type":"link",
"href":"http://google.com"
},
{
"type":"image",
"src":"http://google.com/logo.png"
},
{
"type":"text",
"text":"some text here"
},
]
我想将其反序列化为对象列表,其中每个对象都是基类的子类。列表中的每个项目都有不同的属性(href、src、文本),所以我不能使用同一个类来达到一个。相反,我想要一个普通类的三个子类。JSON 列表中每个项目的 type 属性可用于决定使用哪个子类。例如,我可以有以下课程
public Item{
public string type {get; set;}
}
public LinkItem : Item {
public string href {get; set;}
}
public ImageItem : Item {
public string src {get; set;}
}
public TextItem : Item {
public string text {get; set;}
}
有没有办法做到这一点?还是有更好的方法来反序列化异构对象类型列表?
顺便说一句,我正在使用 json.net