私はペイパルNVPを使用しており、NVPはキーと値のペアの文字列で応答します
例
TOKEN = EC-3XXXXXXXXXXX154J&BILLINGAGREEMENTACCEPTEDSTATUS = 1&CHECKOUTSTATUS = PaymentActionNotInitiated&TIMESTAMP = 2012-07-10T11:45:59Z&CORRELATIONID=ecf9bfe9b1168&ACK=Success&VERSION=64.0&BUILD=3242673&EMAIL=govind_1341920205_per@gmail.com&PAYERID=3V85HKW32SXKG&PAYERSTATUS=verified&FIRSTNAME=Govind&LASTNAME=Malviya&COUNTRYCODE=US&SHIPTONAME=Govind Malviya&SHIPTOSTREET = 1メインセント&SHIPTOCITY =サンノゼ&SHIPTOSTATE = CA&SHIPTOZIP = 95131&SHIPTOCOUNTRYCODE = US&SHIPTOCOUNTRYNAME =米国&ADDRESSSTATUSは=確認&CURRENCYCODE = USD&AMT = 30.90&SHIPPINGAMT = 0.00&HANDLINGAMT = 0.00&TAXAMT = 0.00&DESC =テストEC決済&INSURANCEAMT = 0.00&SHIPDISCAMT = 0.00&PAYMENTREQUEST_0_CURRENCYCODE = USD&PAYMENTREQUEST_0_AMT = 30.90&PAYMENTREQUEST_0_SHIPPINGAMT = 0.00&PAYMENTREQUEST_0_HANDLINGAMT = 0.00&PAYMENTREQUEST_0_TAXAMT = 0.00&PAYMENTREQUEST_0_DESC =テストEC決済&PAYMENTREQUEST_0_INSURANCEAMT = 0.00&PAYMENTREQUEST_0_SHIPDISCAMT = 0.00&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED =偽&PAYMENTREQUEST_0_SHIPTONAME = Govind Malviya&PAYMENTREQUEST_0_SHIPTOSTREET = 1 MAIN ST&PAYMENTREQUEST_0_SHIPTOCITY =サンノゼ&PAYMENTREQUEST_0_SHIPTOSTATE = CA&PAYMENTREQUEST_0_SHIPTOZIP = 95131&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE = US&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME =米国&PAYMENTREQUESTINFO_0_ERRORCODE = 0PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED =偽&PAYMENTREQUEST_0_SHIPTONAME = Govind Malviya&PAYMENTREQUEST_0_SHIPTOSTREET = 1 MAIN ST&PAYMENTREQUEST_0_SHIPTOCITY =サンノゼ&PAYMENTREQUEST_0_SHIPTOSTATE = CA&PAYMENTREQUEST_0_SHIPTOZIP = 95131&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE = US&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME =米国&PAYMENTREQUESTINFO_0_ERRORCODE = 0PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED =偽&PAYMENTREQUEST_0_SHIPTONAME = Govind Malviya&PAYMENTREQUEST_0_SHIPTOSTREET = 1 MAIN ST&PAYMENTREQUEST_0_SHIPTOCITY =サンノゼ&PAYMENTREQUEST_0_SHIPTOSTATE = CA&PAYMENTREQUEST_0_SHIPTOZIP = 95131&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE = US&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME =米国&PAYMENTREQUESTINFO_0_ERRORCODE = 0
JavaScriptSerializerがjson文字列に対して行うように、強く型付けされたデータでそれをdesrializeしたいと思います。マジックストリングを避けたい辞書を使用した解決策を提供しないでください。各プロパティに属性を追加できます。
私のクラスは
public class GetExpressCheckoutDetailsResponse : IPaypalResponse
{
public string Token { get; set; }
public string BillingAgreementAcceptedStatus { get; set; }
public string CheckoutStatus { get; set; }
public string Timestamp { get; set; }
public string CorrelationID { get; set; }
public Status Acknowledgement { get; set; }
public string Version { get; set; }
public string Build { get; set; }
public string Email { get; set; }
public string PayerID { get; set; }
public string PayerStatus { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string CountryCode { get; set; }
public string ShiptoName { get; set; }
public string ShiptoStreet { get; set; }
public string ShipToCity { get; set; }
public string ShipToState { get; set; }
public string ShipToZip { get; set; }
public string ShipToCountryCode { get; set; }
public string ShipToCountryName { get; set; }
public string AddressStatus { get; set; }
public string CurrencyCode { get; set; }
public string Amount { get; set; }
public string ShippingAmount { get; set; }
public string HandlingAmount { get; set; }
public string TaxAmount { get; set; }
public string Description { get; set; }
public string InsuranceAmount { get; set; }
public string ShipdiscAmount { get; set; }
public string PaymentRequestCurrencycode { get; set; }
public string PaymentRequestAmount { get; set; }
public string PaymentRequestShippingAmount { get; set; }
public string PaymentRequestHandlingAmount { get; set; }
public string PaymentRequestTaxAmount { get; set; }
public string PaymentRequestDescription { get; set; }
public string PaymentRequestInsuranceAmount { get; set; }
public string PaymentRequestShipdiscAmount { get; set; }
public string PaymentRequestInsuranceOptionOffered { get; set; }
public string PaymentRequestShipToName { get; set; }
public string PaymentRequestShipToStreet { get; set; }
public string PaymentRequestShipToCity { get; set; }
public string PaymentRequestShipToState { get; set; }
public string PaymentRequestShipToZip { get; set; }
public string PaymentRequestShipToCountryCode { get; set; }
public string PaymentRequestShipToCountryName { get; set; }
public string PaymentRequestInfoErrorCode { get; set; }
}