簡體   English   中英

在JSON屬性名稱中使用點表示法(例如“ payment.token”)

[英]Using dot notation in a JSON property name (e.g. “payment.token”)

我正在處理必須發出API請求的腳本。 當前,要發送到API的對象如下所示:

var request = new
{
    amount = new
    {
        currency = amount.Currency,
        value = amount.Amount
    },
    additionalData = new AdditionalData
    {
        ApplePayToken = paymentToken
    }
};

問題是,API需要以下格式來接收extraData屬性:

"additionalData":{
    "payment.token": "some-token"
}

我正在使用以下代碼嘗試重新格式化上面的對象:

internal partial class AdditionalData
{
    [JsonProperty(PropertyName="additionalData.payment.token")]
    public string ApplePayToken { get; set; }
}

我該如何工作? 目前,該代碼似乎並未更改請求對象的任何內容。 它生成如下:

"additionalData":{
    "ApplePayToken": "some-token"
}

由於請求的其余部分似乎是一個匿名對象,而不是僅為AdditionalData創建類,因此可以使用Dictionary

var request = new
{
    amount = new
    {
        currency = amount.Currency,
        value = amount.Amount
    },
    additionalData = new Dictionary<string, object>
    {
        { "payment.token", "some-token" }
    }
};

既然你說你是新來的C#,請注意,我用的字典,這相當於預先建立的字典並將其分配給anyonymous對象的對象初始化模式additionalData

Dictionary<string, object> addtData = new Dictionary<string, object>();
addtData.Add("payment.token", "some-token");

var request = new
{
    amount = new
    {
        currency = amount.Currency,
        value = amount.Amount
    },
    additionalData = addtData
};

在線嘗試

另外,您可以在C#中創建所需的所有類:

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

在線嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM