簡體   English   中英

C#通用列表到Json嵌套對象

[英]C# Generic List to Json nested objects

我想知道如何使用C#將C#通用列表導出到使用嵌套對象而不是Json Array的JSON對象中。

我想生成的Json應該看起來像這樣:

{
  "sales_invoice": {
    "contact_id": 201171400939013415,
    "remove_invoice_sequence_id": true,
    "invoice_sequence_id": "F2017004",
    "reference": null,
    "invoice_date": "5-1-2017",
    "currency": "EUR",
    "prices_are_incl_tax": false,
    "details_attributes": {
      "0": {
        "description": "Product description",
        "price": 13.80,
        "amount": "10",
        "tax_rate_id": 197923875808347751,
        "ledger_account_id": 197923875101607508
      },
      "1": {
        "description": "Product description",
        "price": 13.80,
        "amount": "10",
        "tax_rate_id": 197923875808347751,
        "ledger_account_id": 197923875101607508
      }
    }
  }
}

這是我的C#類,包括Json屬性:

 [JsonObject(Title = "sales_invoice")]
    public class SalesInvoice
    {
        [JsonProperty("contact_id")]
        public long ContactId { get; set; }

        [JsonProperty("remove_invoice_sequence_id")]
        public bool RemoveInvoiceSequenceId { get; set; }

        [JsonProperty("invoice_sequence_id")]
        public string InvoiceSequenceId { get; set; }

        [JsonProperty("reference")]
        public string Reference { get; set; }

        [JsonProperty("invoice_date")]
        public string InvoiceDate { get; set; }

        [JsonProperty("currency")]
        public string Currency { get; set; }


        [JsonProperty("prices_are_incl_tax")]
        public bool PricesAreIncludingTax { get; set; }


        [JsonProperty("details_attributes")]
        public List<SalesInvoiceDetails> Details { get; set; }

    }

    public class SalesInvoiceDetails
    {

        [JsonProperty("0")]
        public SalesInvoiceDetailAttributes SalesInvoiceDetail { get; set; }
    }

    public class SalesInvoiceDetailAttributes
    {

        [JsonProperty("description")]
        public string Description { get; set; }


        [JsonProperty("price")]
        public decimal Price { get; set; }


        [JsonProperty("amount")]
        public string Amount { get; set; }


        [JsonProperty("tax_rate_id")]
        public long TaxRateId { get; set; }


        [JsonProperty("ledger_account_id")]
        public long LedgerAccountId { get; set; }
    }

因此,如何使該“ 0”和“ 1”對象動態化? 現在,我得到的結果全都是“ 0”。

提前致謝!

這個性質:

[JsonProperty("details_attributes")]
public List<SalesInvoiceDetails> Details { get; set; }

應該是Dictionary<string, SalesInvoiceDetailAttributes>而不是List<SalesInvoiceDetails>

對於您想要的結構,您的SalesInvoiceDetails類是多余的,應將其刪除。

當您添加到該詞典中時,將在其中增加密鑰:

someObject.Details.Add("0", new SalesInvoiceDetailAttributes());
someObject.Details.Add("1", new SalesInvoiceDetailAttributes());
//etc

序列化后,您的json看起來將完全符合您的要求。

我在這里開小提琴

暫無
暫無

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

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