如何将以数字开头的json对象转换为c#?
我的型号是:
public class TransactionPaymentResponse
{
[JsonPropertyName("3DSecure")]
public _3DSecure _3DSecure { get; set; }
// removed rest
}
public class _3DSecure
{
[JsonPropertyName("status")]
public string Status { get; set; }
}
反序列化
var responseStream = await httpResponseMessageForTranscation.Content.ReadAsStringAsync();
responseTranscation = Newtonsoft.Json.JsonConvert.DeserializeObject<TransactionPaymentResponse>(responseStream);
return responseTranscation;
这是我的json字符串(http post请求的结果(
"{"statusCode":"2001","statusDetail":"Transaction rejected.","transactionId":"3D941962-A0FE-37ED-503A-BBEE4C6EE535","transactionType":"Payment","retrievalReference":0,"paymentMethod":{"card":{"cardType":"Visa","lastFourDigits":"0006","expiryDate":"0223","cardIdentifier":"2DEDC06B-6F96-4C78-8E64-9F1CD2107A8F","reusable":false}},"amount":{"totalAmount":50,"saleAmount":50,"surchargeAmount":0},"currency":"GBP","fiRecipient":{},"status":"Rejected","avsCvcCheck":{"status":"NoMatches","address":"NotProvided","postalCode":"NotProvided","securityCode":"NotProvided"},"3DSecure":{"status":"NotAuthenticated"}}"
但是responseTransaction的输出是:
{
"statusCode": "2001",
"statusDetail": "Transaction rejected ",
"transactionId": "3D941962-A0FE-37ED-503A-BBEE4C6EE535",
"transactionType": "Payment",
"retrievalReference": 0,
"3DSecure": null
// reomved rest of the output
}
我的_3DSecure型号出了什么问题?
在jsonString中,值为"3DSecure":{"status":"NotAuthenticated"
但在我的呼吸3DSecure: null
为什么?有人帮我吗
JsonPropertyName
属性与System.Text.Json
序列化程序一起使用。
对于Newtonsoft.Json
,您需要使用JsonProperty
属性。
public class TransactionPaymentResponse
{
[JsonProperty("3DSecure")]
public _3DSecure _3DSecure { get; set; }
// removed rest
}
public class _3DSecure
{
[JsonProperty("status")]
public string Status { get; set; }
}
有了这些更改,您的示例JSON就可以正确地反序列化。