2012-02-08 9 views
1

API, который я использую, предоставляет полезную нагрузку JSON. Часть ответа имеет свойство, которое содержит массив именованных объектов. Я думаю, что хочу десериализовать эту часть в .Net List, проблема в том, что каждый объект в массиве добавляется с именем, поэтому я не могу получить его как список.Deserialize JSON named property .Net Object

Вот полезная нагрузка:

{ 
    "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, чтобы сделать это, но я снова в тупик ..

+0

@Etienne de martel, как вы отформатировали JSON, я боролся, но не смог? – Markive

+1

Как и любой код: просто отпустите каждую строку с 4 пробелами (или, еще лучше, выберите весь код и нажмите кнопку «Код»). Для получения дополнительной информации прочитайте [Справка по редактированию] (http://stackoverflow.com/editing-help). –

ответ

1

Такой «массив названных объектов», как вы его назвали, является хорошо известной структурой данных и называется словарь или map. (Для .NET см. this doc.)

Просто используйте Dictionary<string, YourServiceOptionObject> для ServiceOptions.

Примечание стороны: на самом деле структура собственности ServiceOptions, что вы, вероятно, относитесь к, ничем не отличается от CheapestQuote собственности, за исключением того факта, что каждый ключ вместо примитивного, получившего значения значения, которое является еще одним вложенным словарь/объект.

+1

Не мог увидеть лес с деревьев .. Спасибо! – Markive