[英]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.