Mam duży zbiór danych Json, który muszę deserializować. Korzystam z Json.net z JsonTextReader
, aby odczytać dane.Deserializować klasy pochodne przy użyciu Json.net bez używania JObject
Mój problem polega na tym, że muszę deserializować niektóre pochodne klasy, więc muszę mieć możliwość "patrzenia w przyszłość" dla określonej właściwości określającej mój typ danych. W poniższym przykładzie parametr "typ" służy do określenia typu obiektu do deserializacji.
{
type: "groupData",
groupParam: "groupValue1",
nestedObject:
{
type: "groupData",
groupParam: "groupValue2",
nestedObject:
{
type: "bigData",
arrayData: [ ... ]
}
}
Moje pochodne obiekty mogą być mocno zagnieżdżone i bardzo głębokie. Ładowanie całego zbioru danych w pamięci nie jest pożądane, ponieważ będzie wymagało dużej ilości pamięci. Gdy przejdę do obiektu "bigData", będę przetwarzał dane (takie jak tablica w powyższym przykładzie), ale nie będzie on przechowywany w pamięci (jest zbyt duży).
Wszystkie rozwiązania mojego problemu, które widziałem do tej pory, wykorzystały JObject
do deserializacji częściowych obiektów. Chcę uniknąć używania JObject
, ponieważ będzie deserializować każdy obiekt w dół hierarchii wielokrotnie.
Jak mogę rozwiązać problem z deserializacją?
Czy istnieje sposób na przeszukanie parametru "type", a następnie powrót do początku {obiektu, aby rozpocząć przetwarzanie obiektu?
nie można zrobić, uciec z pola typu i określić typ ręcznie w klasie, z której deserializujesz? Podawanie typów nie zmienia się przez cały czas. –