2012-02-08 2 views
1

사용중인 API에서 JSON 페이로드를 제공합니다. 응답 부분에는 명명 된 객체의 배열을 포함하는 속성이 있습니다. 나는이 부분을 .Net List로 deserialize하고 싶다. 문제는 배열의 각 객체가 이름 앞에 붙어있어서 목록으로 가져올 수 없다는 것이다. 여기 .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