私は 'd'ルート要素の中にラップされたJSON結果を返すWCFサービスを消費しています。 JSON応答は次のようになります。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);
か何か...
+1。 –
中間の 'JToken'を解析せずにこれを行う方法を尋ねる関連質問:[JSON.NETは特定のプロパティを非直列化する](https://stackoverflow.com/questions/19438472/json-net-deserialize-a-specific-プロパティ)。 – dbc