Json 如何反序列化类型信息在其外部的对象
我有一个Json 如何反序列化类型信息在其外部的对象,json,deserialization,discriminated-union,Json,Deserialization,Discriminated Union,我有一个父类类型,其中一个字段是判别联合(JsonSubTypes)。在下面的示例中,我将判别联合(id)保留在我的子字段中。 我想知道的是:discriminant是否可以在我的子对象之外直接在父对象中 什么有效 public class Parent{ Child childField{get;set;} } [JsonConverter(typeof(JsonSubTypes),CHILDTYPE)] [JsonSubTypes.KnownSubTypes(typeof(Chil
父类
类型,其中一个字段是判别联合
(JsonSubTypes
)。在下面的示例中,我将判别联合
(id)保留在我的子字段中。
我想知道的是:discriminant
是否可以在我的子对象之外直接在父对象中
什么有效
public class Parent{
Child childField{get;set;}
}
[JsonConverter(typeof(JsonSubTypes),CHILDTYPE)]
[JsonSubTypes.KnownSubTypes(typeof(Child1),CTYPE.Child1)]
[JsonSubTypes.KnownSubTypes(typeof(Child2),CTYPE.Child2)]
public abstract class Child{
public enum Discriminator{
Child1=0,
Child2=1
}
private const string CHILDTYPE="childType";
[JsonProperty(CHILDTYPE)]
public abstract Discriminator Kind{get;} //i want this moved to parent
}
public class Child1:Child{
public int Value{get;set;}
public override Kind=>Discriminator.Child1;
}
public class Child2:Child{
public bool Value{get;set;}
public override Kind=>Discriminator.Child2;
}
用法
List<Parent>parents=new List<Parent>{new Child1{Value=3},new Child2{Value=True}};
var str=JsonConvert.SerializeObject(parents);
List<Parent>parents=JsonConvert.DeserializeObject<List<Parent>(str);
正如您所看到的,我希望将我的种类
字段从子项
移动到父项
中。我能以某种方式实现这一点吗?我想保持一切不变,而不是像这样的Json
:
{
childField:{ Kind:3}
}
{
Kind:3
childField:{}
}
我需要适应这样的json:
{
childField:{ Kind:3}
}
{
Kind:3
childField:{}
}
我能做到这一点吗?我是否可以通过某种方式装饰父级,使其知道如何基于另一个字段反序列化其一个字段