Как десериализовать сложную структуру данных с несколькими подтипами json - PullRequest
0 голосов
/ 11 марта 2019

Я хотел бы знать, что было бы масштабируемым решением при наличии json с несколькими уровнями subtypes, отображенными непосредственно на него или на property.

[JsonConverter(typeof(JsonSubtypes),"Kind"]
[KnownSubType(typeof(A),"a"]
[KnownSubType(typeof(B),"b"]
public abstract class Root
{
    public abstract string Kind{get;set;}
}
public class A:Root {
  override Kind=>"a";
   [JsonProperty]
    public Prop prop{get;set;}
}



[JsonConverter(typeof(JsonSubtypes),"PropKind"]
[KnownSubtypes(typeof(P1),"p1"]
[KnownSubtypes(typeof(P2),"p2"]
public abstract class Prop
{
   public abstract string PropKind{get;}
}
public abstract class P1:Prop
{
   override PropKind=>"p1";
   public int SomeValue{get;set;}

}

.Можно видеть, что у меня есть некоторые подтипы для моего корневого объекта, но у меня есть подтипы и для одного из его полей. В будущем мне может понадобиться больше уровней подтипов. Этот подход с раздутыми подтипами? Должен ли я просто использовать объекты и большой переключательдля каждого подтипа? Какой подход лучше?

...