REST Web サービスを使用する C# バージョン 4 アプリケーションをコーディングしています。これらの Web サービスは、ASP.NET MVC RESTful Web サービス アプローチで記述されています。これらの Web サービス メソッドの半分は、複数のルートを持つ JSON 文字列を返します(以下のサンプル JSON データを参照してください)。ただし、特定の JSON 応答 (以下を参照してください) については、複数ルートのJSON 応答文字列を、すべてのデータ応答ではなく、関心のある Device オブジェクト (たとえば、Device クラスに属する) に 部分的に逆シリアル化したいと考えています。
C# .NET ライブラリまたは JSON.net コードを使用して、ルートが 1 つしかない JSON 文字列を逆シリアル化する方法を知っています。しかし、複数ルートの JSON データをどのように処理すればよいかわかりません。ご意見をお聞かせください。ありがとうございました。
たとえば、次の JSON 応答では、"device" オブジェクト (Device クラスからインスタンス化された) のデータを取得し、"version_info" および "SKU_info" データを無視します。
次の JSON 応答には、「version_info」、「SKU_info」、「device」の 3 つのルートがあります。
{
“version_info” : { “version” : “1.0”, “owner_id” : 237},
“SKU_info” : {“id” : 1928399, “active”: true},
“device” : {
“id”: 7732, “name” : “desktop computer ”, “parent_device_id”: 2982,
“sub_devices”:
[
{“id”: 7733, “name”: “fan”, “quantity” : 1 },
{“id”: 7734, “name”: “memory chip”, “quantity” : 4 },
{“id”: 7735, “name”: “CPU”, “quantity” : 1 },
{“id”: 7736, “name”: “hard disk”, “quantity” : 2 },
],
“user_id” : 864
}
}
そして、私のカスタム「Device」および「SubDevice」クラス:
public class Device
{
public long Id;
public string Name;
public long ParentDeviceId;
public List<SubDevice> Subdevices;
public int UserId;
}
public class SubDevice
{
public long Id;
public string Name;
public int Quantity;
}