我试图扩展这里给出的JSON.net示例 http://james.newtonking.com/projects/json/help/CustomCreationConverter.html
我有另一个派生自基类/接口的子类
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Employee : Person
{
public string Department { get; set; }
public string JobTitle { get; set; }
}
public class Artist : Person
{
public string Skill { get; set; }
}
List<Person> people = new List<Person>
{
new Employee(),
new Employee(),
new Artist(),
};
Run Code Online (Sandbox Code Playgroud)
如何将Json反序列化回List <Person>
[
{
"Department": "Department1",
"JobTitle": "JobTitle1",
"FirstName": "FirstName1", …Run Code Online (Sandbox Code Playgroud) 我有一个类接口类型的类,如:
public class Foo
{
public IBar Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我还有IBar可以在运行时设置的接口的多个具体实现.其中一些具体类需要自定义JsonConverter进行序列化和反序列化.
利用该TypeNameHandling.Auto选项,非转换器需要IBar类可以完美地序列化和反序列化.另一方面,自定义序列化的类没有$type名称输出,虽然它们按预期序列化,但它们不能反序列化为它们的具体类型.
我试图$type在自定义中自己写出名称元数据JsonConverter; 但是,在反序列化时,转换器将被完全绕过.
是否有解决方法或处理此类情况的正确方法?