C# 在JSON属性名称中使用点表示法(例如“payment.token”)

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

我正在编写一个必须发出API请求的脚本。当前,要发送到API的对象如下所示:

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; }
}