Strategia per deserializzare Json di tipo sconosciuto

1

Trovo spesso il seguente dilemma. Supponiamo che tu stia recuperando i messaggi Json da un database, da un bus dei messaggi, da un archivio di eventi o altro, e devi deserializzare ciascun messaggio nel tipo corretto. Qualcosa come var deserializedObject = Json.Deserialize<?>(jsonMessage);

Qual è la migliore strategia / design per farlo?

Suppongo che Json debba contenere qualche tipo di metadata di tipo che aiuti il deserializzatore a sapere in quale oggetto lo deserializzi. È giusto? C'è qualche buon articolo su questo?

Se questo è l'approccio giusto, il Json avrebbe qualcosa come '$type': 'MyClass'

Ci sarebbe un'alternativa? Forse qualche funzionalità che afferra il Json e lo deserializza in un oggetto dinamico e successivamente inizia a scorrere i tipi "conosciuti" cercando di trovare una corrispondenza tra la struttura Json e un tipo noto?

Ancora una volta, qualsiasi buon articolo su questo o sull'esempio, meglio se con c #, sarebbe molto apprezzato.

Aggiornamento: alcune cose interessanti che ho trovato nel caso qualcuno ne sapesse qualcosa. MongoDb è in grado di memorizzare oggetti con proprietà astratte o di interfaccia e in seguito sa come deserializzarli perché memorizza un discriminatore di tipo con il documento di Bson. Ecco perché ho pensato che forse sono necessari sempre alcuni metadati insieme a un elenco di tipi noti.

    
posta iberodev 19.09.2018 - 23:11
fonte

0 risposte

Leggi altre domande sui tag