簡體   English   中英

將JSON數組對象反序列化為C#類類型轉換

[英]Deserialize JSON array Object to c# class type conversion

我從[HttpPost]以以下格式獲取JSON數據。 我想反序列化為兩個C#模型。

data {{ 
  "invoiceNumber": "55",
  "invoiceDate": "2018-10-25T13:16:37.843Z",
  "invoiceValue": 55,
  "remarks": null,'
  "items": [
    {
      "gRNNo": "0000000",
      "itemCode": 1,
      "itemDesc": "Lux",
      "qty": "2",      
    },
    {
      "gRNNo": "0000000",
      "itemCode": 2,
      "itemDesc": "Rexona",
      "qty": "1"      
    }
  ]
}}

我能夠獲取Header數據,但items數組。

PurHeader purHeader = JsonConvert.DeserializeObject<PurHeader>(data.ToString()); //Working for Header

但是無法獲取數組數據。 我嘗試了以下。

    List<PurDetail> purDetail = JsonConvert.DeserializeObject<List<PurDetail>>(data["items"].ToString());
var purDetail = JsonConvert.DeserializeObject<PurDetail[]>(data["items"].ToString());

我的課程-我在“代碼優先”中使用它們。 data json來自Angular 7 ReactiveForms

public class PurHeader
    {        
        public string GRNNo { get; set; }        
        public string InvoiceNumber { get; set; }
        public DateTime InvoiceDate { get; set; }
        public decimal InvoiceValue { get; set; }
        public string Remarks { get; set; }

        public ICollection<PurDetail> PurDetail { get; set; }
    }

public class PurDetail
    {
        public string GRNNo { get; set; }
        public string ItemCode { get; set; }
        public string ItemDesc { get; set; }
        public decimal Qty { get; set; }

        [ForeignKey("GRNNo")]
        public PurHeader PurHeader { get; set; }
    }

您的JSON格式不正確,我希望這只是您輸入的錯誤。 但是,您應該能夠使用以下類來解析整個集合:

public class Rootobject
{
  public string invoiceNumber { get; set; }
  public DateTime invoiceDate { get; set; }
  public int invoiceValue { get; set; }
  public object remarks { get; set; }
  public Item[] items { get; set; }
}

public class Item
{
  public string gRNNo { get; set; }
  public int itemCode { get; set; }
  public string itemDesc { get; set; }
  public string qty { get; set; }
}

Rootobject purHeader = JsonConvert.DeserializeObject<Rootobject>(data.ToString());

另請參見我關於如何輕松地從XML派生類的答案(同樣適用於JSON): 將此XML解析為對象

假設您的data沒有兩個{{您的代碼應該可以使用。 但是您可以執行此操作而無需將其轉換為string ,只需:

var purHeader = data.ToObject<PurHeader>();
var purDetails = data["items"].ToObject<PurDetail[]>();

暫無
暫無

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

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