【发布时间】:2012-07-10 12:32:17
【问题描述】:
我正在使用 paypal 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&SHIPTOSREET=1 Main St&SHIPTOCITY=San Jose&SHIPTOSTATE=CA&SHIPTOZIP=95131&SHIPTOCOUNTRYCODE=US&SHIPTOCOUNTRYNAME=United States&ADDRESSSTATUS=已确认&CURRENCYCODE=USD&AMT=30.90&SHIPPINGAMT=0.00&HANDLINGAMT=0.00&TAXAMT=0.00&DESC=测试EC payment&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_ 欧共体 payment&PAYMENTREQUEST_0_INSURANCEAMT=0.00&PAYMENTREQUEST_0_SHIPDISCAMT=0.00&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Govind Malviya&PAYMENTREQUEST_0_SHIPTOSTREET=1 主要 St&PAYMENTREQUEST_0_SHIPTOCITY=San Jose&PAYMENTREQUEST_0_SHIPTOSTATE=CA&PAYMENTREQUEST_0_SHIPTOZIP=95131&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=美联航 州&PAYMENTREQUESTINFO_0_ERRORCODE=0
我想在强类型数据中反序列化它,就像 JavaScriptSerializer 对 json 字符串所做的那样。请不要使用字典提供解决方案我想避免使用魔术字符串,我可以在每个属性上添加属性。
我的课是
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; }
}
【问题讨论】:
-
你对使用反射有什么看法?我怀疑是否有一个现成的序列化程序可以做你想做的事。
-
反射和属性听起来不错
-
@Codesleuth 我想可能会有很多不同的响应,但反映 single 固定类对我来说似乎也太过分了。
-
我解决了我的问题检查我的答案。
-
如果我是你,我会删除你在问题中输入的一些代码,它看起来像敏感数据!
标签: c# .net query-string deserialization