序列化接口对象列表

时间:2016-06-28 23:09:40

标签: c# json json.net

使用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仅用于水果列表中的对象?

1 个答案:

答案 0 :(得分:1)

问题的解决方案很简单,真的。

[JsonConverter (typeof(IFruitConverter))]
public interface iFruit
    {

    }

作为旁注,转换器基于this answer。 我向返回CanWrite的转换器添加了false覆盖,因此在序列化期间它将被忽略,并且仅在反序列化期间发挥作用。 感谢@Blorgbeard!