C# 在JSON属性名称中使用点表示法(例如“payment.token”)
我正在编写一个必须发出API请求的脚本。当前,要发送到API的对象如下所示:C# 在JSON属性名称中使用点表示法(例如“payment.token”),c#,object,json.net,C#,Object,Json.net,我正在编写一个必须发出API请求的脚本。当前,要发送到API的对象如下所示: var request = new { amount = new { currency = amount.Currency, value = amount.Amount }, additionalData = new AdditionalData { ApplePayToken = paymentToken } }; "a
var request = new
{
amount = new
{
currency = amount.Currency,
value = amount.Amount
},
additionalData = new AdditionalData
{
ApplePayToken = paymentToken
}
};
"additionalData":{
"ApplePayToken": "some-token"
}
问题是,API希望以下格式接收additionalData属性:
"additionalData":{
"payment.token": "some-token"
}
我正在使用以下代码尝试重新格式化上面的对象:
internal partial class AdditionalData
{
[JsonProperty(PropertyName="additionalData.payment.token")]
public string ApplePayToken { get; set; }
}
我怎样才能让它工作?现在,代码似乎没有改变关于请求对象的任何内容。它生成的结果如下:
var request = new
{
amount = new
{
currency = amount.Currency,
value = amount.Amount
},
additionalData = new AdditionalData
{
ApplePayToken = paymentToken
}
};
"additionalData":{
"ApplePayToken": "some-token"
}
由于请求的其余部分似乎是一个匿名对象,因此您可以使用一个: 或者,您可以在C#中创建所需的所有类:
你能用
字典查找附加数据吗?(假设没有任何重复键)?我对C#很陌生,所以我不太明白你的意思。你能给我举一个你将如何实施的例子吗?在这种情况下没有重复的键。我认为以下方法是正确的指定方法:[JsonProperty(“payment.token”)]
class Request
{
public Amount amount { get; set; }
public AdditionalData additionalData { get; set; }
}
class Amount
{
public string currency { get; set; }
public decimal value { get; set; }
}
class AdditionalData
{
[JsonProperty("payment.token")]
public string applePayToken { get; set; }
}