Asp.net 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))]

我有一个类,它已经在我的xml序列化项目中使用。现在我正在使用Web API,它使用JSON.NET序列化程序来序列化和反序列化对象

[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的格式和反序列化代码!