Sto consumando un servizio WCF che restituisce risultati JSON racchiusi all'interno dell'elemento radice 'd'. La risposta JSON assomiglia a questo:Deserializzazione JSON - come ignorare l'elemento radice?
{"d":[
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":38076567552,
"Drive":"C:\\",
"TotalSpace":134789197824
},
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":166942183424,
"Drive":"D:\\",
"TotalSpace":185149157376
}
]}
Non voglio usare la tipizzazione dinamica, ho il mio Diagnostics.Common.DiskSpaceInfo classe che voglio usare quando la deserializzazione.
Sto utilizzando Json.NET (Netwonsoft JSON).
La domanda è come dirgli di ignorare l'elemento radice (quell'elemento 'd') e analizzare cosa c'è dentro.
La soluzione migliore che ho finora è quello di utilizzare un tipo anonimo:
DiskSpaceInfo[] result = JsonConvert.DeserializeAnonymousType(json, new
{
d = new DiskSpaceInfo[0]
}).d;
questo funziona realmente, ma non mi piace molto. C'è un altro modo? Quello che vorrei è qualcosa di simile:
DiskSpaceInfo[] result = JsonConvert.Deserialize(json, skipRoot: true);
o qualcosa del genere ...
+1 perché mi piace la soluzione di tipo anonimo. –
Domanda correlata che chiede come eseguire questa operazione senza analizzare un 'JToken' intermedio: [JSON.NET deserializza una proprietà specifica] (https://stackoverflow.com/questions/19438472/json-net-deserialize-a-specific- proprietà). – dbc