2012-02-08 6 views
1

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

は、ペイロードです..

{ 
    "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" 
    } 
    } 
} 

私は..私はこれを行うためにJson.Netを使用して幸せになる「ServiceOptions」のリストが欲しい、しかし、再び、私は困惑

+0

@Etienne de martel、どのようにJSONをフォーマットしましたか、私は苦労しましたが失敗しましたか? – Markive

+1

任意のコードと同様に、各行を4つのスペースでインデントするだけです(または、コード全体を選択して[コード]ボタンを押すことをお勧めします)。詳細については、[ヘルプの編集](http://stackoverflow.com/editing-help)を参照してください。 –

答えて

1

このような「名前付きオブジェクトの配列」は、よく知っているデータ構造であり、辞書またはマップと呼ばれます。 (.NETの場合this docを参照)

ServiceOptionsプロパティにはDictionary<string, YourServiceOptionObject>を使用してください。

サイドノートでは:実際にはあなたがおそらくを参照してください財産ServiceOptions、の構造は、事実とは別に、CheapestQuoteプロパティから決して異なっている代わりに、プリミティブな値の武装隊の各キー別のネストされた値辞書/オブジェクト。

+1

木から木を見ることができませんでした..ありがとう! – Markive

関連する問題