1

私が使用している API は、JSON ペイロードを提供します。応答の一部には、名前付きオブジェクトの配列を含むプロパティがあります。この部分を .Net List にデシリアライズしたいと思います。問題は、配列内の各オブジェクトに名前が付加されているため、リストとして取得できないことです。

ペイロードは次のとおりです。

{
  "ShipAction": "GetQuote",
  "Status": "Success",
  "RequestDate": "2012-02-08 21:18:19",
  "Username": "tpi",
  "QuoteID": "6M15AQOrCl059x",
  "QuoteExpires": "2012-02-22 21:18:20",
  "NoServices": 8,
  "DeliveryCountry": "France",
  "CheapestQuote": {
    "SubTotal": "15.96",
    "VatTotal": "3.19",
    "TotalPrice": "19.15"
  },
  "ServiceOptions": {
    "PF_INT": {
      "OptionID": "6183545",
      "Carrier": "PF_INT",
      "ServiceName": "Euro Priority",
      "AlternateName": false,
      "ServiceID": "PF_INT",
      "SubjectToVat": "Y",
      "SubTotal": "15.96",
      "VatTotal": "3.19",
      "TotalPrice": "19.15"
    },
    "FEDEX_ECON": {
      "OptionID": "6183549",
      "Carrier": "FEDEX",
      "ServiceName": "Economy Delivery",
      "AlternateName": false,
      "ServiceID": "FEDEX_ECON",
      "SubjectToVat": "Y",
      "SubTotal": "18.56",
      "VatTotal": "3.71",
      "TotalPrice": "22.27"
    },
    "FEDEX_PRI": {
      "OptionID": "6183548",
      "Carrier": "FEDEX",
      "ServiceName": "International Express",
      "AlternateName": false,
      "ServiceID": "FEDEX_PRI",
      "SubjectToVat": "Y",
      "SubTotal": "20.07",
      "VatTotal": "4.01",
      "TotalPrice": "24.08"
    },
    "TNT_EXPRESS": {
      "OptionID": "6183550",
      "Carrier": "TNT Export",
      "ServiceName": "TNT International Express",
      "AlternateName": false,
      "ServiceID": "TNT_EXPRESS",
      "SubjectToVat": "Y",
      "SubTotal": "20.73",
      "VatTotal": "4.15",
      "TotalPrice": "24.88"
    },
    "DHL_EURO": {
      "OptionID": "6183546",
      "Carrier": "DHL",
      "ServiceName": "DHL Euro Plus",
      "AlternateName": false,
      "ServiceID": "DHL_EURO",
      "SubjectToVat": "Y",
      "SubTotal": "23.10",
      "VatTotal": "4.62",
      "TotalPrice": "27.72"
    },
    "TNT_ECONOMY": {
      "OptionID": "6183551",
      "Carrier": "TNT Export",
      "ServiceName": "TNT International Economy Express",
      "AlternateName": false,
      "ServiceID": "TNT_ECONOMY",
      "SubjectToVat": "Y",
      "SubTotal": "24.14",
      "VatTotal": "4.83",
      "TotalPrice": "28.97"
    },
    "DHL_INT": {
      "OptionID": "6183547",
      "Carrier": "DHL TD",
      "ServiceName": "Time Definite",
      "AlternateName": false,
      "ServiceID": "DHL_INT",
      "SubjectToVat": "Y",
      "SubTotal": "30.79",
      "VatTotal": "6.16",
      "TotalPrice": "36.95"
    },
    "PALLETWAYS_EURO_QUAR": {
      "OptionID": "6183552",
      "Carrier": "PALLETWAYS_EURO",
      "ServiceName": "Quarter Pallet Delivery",
      "AlternateName": false,
      "ServiceID": "PALLETWAYS_EURO_QUAR",
      "SubjectToVat": "Y",
      "SubTotal": "152.67",
      "VatTotal": "30.53",
      "TotalPrice": "183.20"
    }
  }
}

「ServiceOptions」のリストが必要です..Json.Netを使用してこれを行うことができれば幸いですが、やはり困惑しています..

4

1 に答える 1

1

このような「名前付きオブジェクトの配列」は、よく知られているデータ構造であり、辞書またはマップと呼ばれます。(.NETについては、このドキュメントを参照してください。)

プロパティに使用するだけDictionary<string, YourServiceOptionObject>です。ServiceOptions

補足:実際、おそらく参照するプロパティの構造は、プリミティブ値ではなく各キーが別のネストされたディクショナリ/オブジェクトである値を持っているという事実を除けば、プロパティとServiceOptionsまったく異なりません。CheapestQuote

于 2012-02-08T22:19:17.927 に答える