Эффективная десериализация JSON - PullRequest
0 голосов
/ 03 марта 2019

Здравствуйте, мне было интересно, что было бы оптимальным подходом при десериализации списка объектов, которые могут быть:

public class KnownObject
{
   public Payload payload{get;set;}
}
public class UnknownObject
{
   public object payload {get;set}   // ex:{ type=100  }
}

Для которого KnownObject его поле payload имеет вид:

public abstract class Payload{
   public abstract int PType{get;}
}
public class PayloadA
{
   override PType=>0;
}
public class PayloadB
{ 
   override PType=>1;
}

И для UnknownObject его payload является json с PType, которого нет в этом списке, например:
{payload:{ PType:103}}

Я решаю проблему с помощью KnownObject с использованием Discriminated Unions и JsonSubTypes, но я не знаю, что делать с неизвестным Ptype-s.

Мне нужно десериализовать на основе targetObject.payload.Ptype, так как KnownObject и UnknownObject имеютэто поле.

Каким было бы оптимальное решение?

Я в основном хочу что-то вроде:

  1. Чтение object.payload.type
  2. , если значение равнов моем списке jsonsubtypes: десериализовать до KnownObject, до UnknownObject
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...