Używam usługi WCF, która zwraca wyniki JSON zapakowane wewnątrz elementu głównego "d". Odpowiedź JSON wygląda następująco:Deseryzacja JSON - jak zignorować element główny?
{"d":[
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":38076567552,
"Drive":"C:\\",
"TotalSpace":134789197824
},
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":166942183424,
"Drive":"D:\\",
"TotalSpace":185149157376
}
]}
nie chcę użyć dynamicznej wpisywanie, mam klasy Diagnostics.Common.DiskSpaceInfo że chcę użyć podczas deserializacji.
Używam Json.NET (Netwonsoft JSON).
Pytanie, w jaki sposób powiedzieć, aby zignorować element główny (ten element "d") i przeanalizować, co jest w środku.
Najlepszym rozwiązaniem mam tak daleko jest użycie typu anonimowego:
DiskSpaceInfo[] result = JsonConvert.DeserializeAnonymousType(json, new
{
d = new DiskSpaceInfo[0]
}).d;
to faktycznie działa, ale nie podoba mi się to bardzo. Czy istnieje inny sposób? Chciałbym coś takiego jak:
DiskSpaceInfo[] result = JsonConvert.Deserialize(json, skipRoot: true);
czy coś takiego ...
+1 bo lubię swój anonimowych rozwiązanie typu. –
Powiązane pytanie, które pyta, jak to zrobić bez parsowania do pośredniego 'JToken': [JSON.NET deserialize określonej właściwości] (https://stackoverflow.com/questions/19438472/json-net-deserialize-a-specific- własność). – dbc