c# - 反序列化JSON数组对象到c#类类型转换
问题描述
[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"
}
]
}}
我能够获取标题数据但项目数组。
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());
我的课程 - 我在 Code First 中使用它们。而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):Parse This XML to object
推荐阅读
- r - Boxplot not displaying correctly
- python - Running Python function at defined intervals
- python - 更改文件夹中pdf文件的日期格式
- reactjs - ReactJS - 用 axios 替换 fetch API 不起作用
- java - 在运行时(通过 ScriptEngine)从 Java 执行时如何测量 Groovy 代码覆盖率?
- javascript - 向 API 发出请求时,视图上看不到任何数据
- python-3.x - Sklearn AdaBooster 和基础估计器
- trimesh - 为 trimesh 生成网格和光线交点
- android - Android Dialog Fragment RecyclerView 包装内容但基于约束的最大高度?
- ms-access - 如何在 MS Access 中安装 MROUND 功能?