Tôi đang sử dụng dịch vụ WCF trả về kết quả JSON được bao trong phần tử gốc 'd'. Câu trả lời JSON trông như thế này:Deserializing JSON - cách bỏ qua phần tử gốc?
{"d":[
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":38076567552,
"Drive":"C:\\",
"TotalSpace":134789197824
},
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":166942183424,
"Drive":"D:\\",
"TotalSpace":185149157376
}
]}
Tôi không muốn sử dụng gõ năng động, tôi có Diagnostics.Common.DiskSpaceInfo lớp học của tôi mà tôi muốn sử dụng khi deserializing.
Tôi đang sử dụng Json.NET (JSON của Netwonsoft).
Câu hỏi đặt ra là cách yêu cầu nó bỏ qua phần tử gốc (phần tử 'd' đó) và phân tích nội dung bên trong.
Giải pháp tốt nhất mà tôi có cho đến nay là sử dụng một loại vô danh:
DiskSpaceInfo[] result = JsonConvert.DeserializeAnonymousType(json, new
{
d = new DiskSpaceInfo[0]
}).d;
này thực sự hoạt động nhưng tôi không thích nó rất nhiều. Có cách nào khác không? Những gì tôi muốn là một cái gì đó như:
DiskSpaceInfo[] result = JsonConvert.Deserialize(json, skipRoot: true);
hoặc một cái gì đó như thế ...
+1 vì tôi thích giải pháp loại vô danh của bạn. –
Câu hỏi liên quan yêu cầu cách thực hiện điều này mà không cần phân tích cú pháp thành một trung gian 'JToken': [JSON.NET deserialize một thuộc tính cụ thể] (https://stackoverflow.com/questions/19438472/json-net-deserialize-a-specific- bất động sản). – dbc