使用Json.net,我想反序列化包含接口对象的篮子。 此...
{
"Owner": "John",
"Fruit": [ <an apple object>, <a pear>, etc... ]
}
......应该进入这个......
class Basket
{
string Owner;
List<iFruit> Fruit; //contains instances of Apple, Pear,...
}
无法实例化接口,因此需要转换为具体对象。我找到了使用JsonConverter创建具体Apple和Pear实例的示例。但是列表总是直接用以下行创建:
List<iFruit> fruit = JsonConvert.DeserializeObject<List<iFruit>>(json, new FruitConverter());
如何对整个篮子进行反序列化,其中JsonConverter仅用于水果列表中的对象?
答案 0 :(得分:1)
问题的解决方案很简单,真的。
[JsonConverter (typeof(IFruitConverter))]
public interface iFruit
{
}
作为旁注,转换器基于this answer。
我向返回CanWrite
的转换器添加了false
覆盖,因此在序列化期间它将被忽略,并且仅在反序列化期间发挥作用。
感谢@Blorgbeard!