【发布时间】:2019-02-13 05:05:58
【问题描述】:
我想通过 json.net 序列化这段代码:
public interface ITestInterface
{
string Guid {get;set;}
}
public class TestClassThatImplementsTestInterface1
{
public string Guid { get;set; }
}
public class TestClassThatImplementsTestInterface2
{
public string Guid { get;set; }
}
public class ClassToSerializeViaJson
{
public ClassToSerializeViaJson()
{
this.CollectionToSerialize = new List<ITestInterface>();
this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
}
List<ITestInterface> CollectionToSerialize { get;set; }
}
我想用 json.net 序列化/反序列化 ClassToSerializeViaJson。序列化正在工作,但反序列化给了我这个错误:
Newtonsoft.Json.JsonSerializationException:无法创建 ITestInterface 类型的实例。类型是接口或抽象类,不能实例化。
那么我该如何反序列化List<ITestInterface> 集合呢?
【问题讨论】:
-
你已经尝试了什么?您甚至阅读过 JSON.NET 的文档吗?!我很确定序列化和反序列化是此类文档首先要介绍的内容之一。
-
是的,序列化正在工作,但是当我尝试反序列化时出现错误:Newtonsoft.Json.JsonSerializationException:无法创建 ITestInterface 类型的实例。类型是接口或抽象类,不能实例化。
-
那么也许你应该在你的问题中提出这个问题?而不是问这种开放式的“我该怎么办?” “它不起作用”的问题,您确实需要提供所有信息,这是什么错误?它发生在哪里?到目前为止,您尝试过什么解决方法?请使用这些内容编辑您的问题,以便社区可以更好地帮助您,而不是标记您的问题。
-
Nicholas Westby 在awesome article 中提供了一个很好的解决方案