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