Asp.net web api JSON.NET对象数组反序列化为已知类型类
我有一个类,它已经在我的xml序列化项目中使用。现在我正在使用Web API,它使用JSON.NET序列化程序来序列化和反序列化对象Asp.net web api JSON.NET对象数组反序列化为已知类型类,asp.net-web-api,json.net,asp.net-web-api2,Asp.net Web Api,Json.net,Asp.net Web Api2,我有一个类,它已经在我的xml序列化项目中使用。现在我正在使用Web API,它使用JSON.NET序列化程序来序列化和反序列化对象 [Serializable] public class MyClass { private object[] itemsField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("MyClass1", typeof(MyClass1))]
[Serializable]
public class MyClass
{
private object[] itemsField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MyClass1", typeof(MyClass1))]
[System.Xml.Serialization.XmlElementAttribute("MyClass2", typeof(MyClass2))]
public object[] Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
}
[Serializable]
public class MyClass1
{
//some properties
}
[Serializable]
public class MyClass2
{
// some properties
}
我没有在MyClass项的对象数组中获取MyClass1。相反,它给了我一些项目中的JObject。如果我了解您想要做什么,我想您可以使用自定义JsonConverter来完成。但您首先需要以某种方式限制项目的类型。例如,您可以定义接口项。也许它没有声明任何方法,但您要做的是将[JsonConvertertypeofMyJsonConverter]属性应用于IItems。然后,每当序列化或反序列化项的成员时,它都会被调用。这需要做一些工作,但这是我了解如何在JSON.net中实现多态性的唯一方法
呃,JSON.net中有内置的多态性支持,但它要求JSON中存在特殊类型的键,而您以前的格式可能没有这种键。显示JSON的格式和反序列化代码!