如何将以数字开头的json对象转换为c



如何将以数字开头的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就可以正确地反序列化。

最新更新