我正在调用返回JSON结果的WCF服务,这些结果被包装在“d”根元素中。JSON响应如下:
{"d":[
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":38076567552,
"Drive":"C:\\",
"TotalSpace":134789197824
},
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":166942183424,
"Drive":"D:\\",
"TotalSpace":185149157376
}
]}
我不想使用动态类型,我有我的类Diagnostics.Common.DiskSpaceInfo,在反序列化时希望使用它。
我正在使用Json.NET(Netwonsoft JSON)。
问题是如何告诉它忽略根元素(即'd'元素),并解析里面的内容。
到目前为止,我找到的最好的解决方案是使用匿名类型:
DiskSpaceInfo[] result = JsonConvert.DeserializeAnonymousType(json, new
{
d = new DiskSpaceInfo[0]
}).d;
这实际上是起作用的,但我不太喜欢它。还有其他方法吗?我想要的是像这样的东西:
DiskSpaceInfo[] result = JsonConvert.Deserialize(json, skipRoot: true);
或类似的东西......
JToken
的情况下完成此操作:JSON.NET 反序列化特定属性。 - dbc