Vorrei deserializzare un oggetto System.Security.Claims.Claim
serializzato nel seguente modo:Come scegliere a livello di programmazione un costruttore durante la deserializzazione?
{
"Issuer" : "LOCAL AUTHORITY",
"OriginalIssuer" : "LOCAL AUTHORITY",
"Type" : "http://my.org/ws/2015/01/identity/claims/mytype",
"Value" : "myvalue",
"ValueType" : "http://www.w3.org/2001/XMLSchema#string"
}
quello che ottengo è una JsonSerializationException
:
in grado di trovare un costruttore da utilizzare per il tipo System.Security. Claims.Claim. Una classe deve avere un costruttore predefinito , un costruttore con argomenti o un costruttore contrassegnato con con l'attributo JsonConstructor.
Dopo alcune indagini ho finalmente capito il significato di uno nel messaggio di cui sopra: il deserializzatore JSON non riesce a trovare il costruttore destra come ci sono - nel caso del tipo Claim
- più costruttori con argomenti (sebbene esista un costruttore con argomenti che corrispondono esattamente alle proprietà precedenti).
C'è un modo per dire al deserializzatore quale costruttore scegliere senza aggiungere l'attributo JsonConstructor
a quel tipo mscorlib?
Daniel Halan ha risolto questo problema con un patch to Json.NET a few years ago. C'è un modo per risolvere questo senza modificare Json.NET in questi giorni?
Potrebbe pubblicare il tuo codice + costruttori? – Bauss
Purtroppo non ho avuto il tempo di affrontarlo ora, ma puoi scavalcare e implementare il tuo 'JsonConverter'. [Questa risposta precedente] (http: // StackOverflow.it/questions/27311635/how-do-i-parse-a-json-string-to-ac-sharp-object-using-inheritance-polymorphis/27313288 # 27313288) potrebbe aiutarti a iniziare, ma dovrai prendilo un po 'oltre e leggi i campi json prima di chiamare il costruttore –
Grazie per il link alla tua risposta precedente con il tuo 'JsonCreationConverter'! –
CodeFox