我有一个已经在我的项目中使用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的Items的对象数组中获取MyClass1。鉴于它在物品中给了我一些JObject。
答案 0 :(得分:0)
如果我理解你想做什么,我认为你可以用自定义的JsonConverter来做。但您首先需要以某种方式限制项目的类型。例如,您可以定义接口IItems。也许它声明没有方法,但你用它做的是将[JsonConverter(typeof(MyJsonConverter))]
属性应用于IItems。然后,只要Item的成员被序列化或反序列化,它就会被调用。这需要一些工作,但这是我在JSON.net中弄清楚如何进行多态的唯一方法。
呃,JSON.net中有内置的多态支持,但它需要特殊的&#34;类型&#34;存在于JSON中的密钥,您的预先存在的格式可能没有。