我已经嵌套了JObject:
{
"model": {
"id": "1",
"amount": "1.00",
"details": {
"tax": "0.10",
"order": "DFG456"
},
"lineItems": [
{
"commodityCode": "abc",
"unitOfMeasure": "pnd",
"quantity": "1",
"uomCost": "1.00",
"taxAmount": "0.10",
"itemTotalAmount": "0.10"
},{
"commodityCode": "xyz",
"unitOfMeasure": "pnd",
"quantity": "2",
"uomCost": "1.00",
"taxAmount": "0.10",
"itemTotalAmount": "0.10"
}
]
} }
我正在尝试将其反序列化为我的ViewModel,结构如下:
public class MyViewModel {
int id { get; set;}
decimal amount { get; set; }
DetailsVm details { get; set;}
List<DetailItem> DetailsItemsList { get; set; }
}
我可以使用动态对象来解决顶级模型和子细节对象的问题:
var model = json.model.ToObject<MyViewModel>;
var details = json.serviceInfo.ToObject<DetailsVm>;
但是,我找不到从json中提取DetailsItems列表的方法。模型中的属性为null。关于如何提取子可枚举对象的任何建议将不胜感激。数组,列表,只是可枚举 - 任何一种方式都可以。
答案 0 :(得分:1)
制作如下模型:
public class MyViewModel {
int id { get; set;}
decimal amount { get; set; }
DetailsVm details { get; set;}
IEnumerable<DetailItem> DetailsItemsList { get; set; }
}
然后更改json以发送集合NAMED DetailsItemsList。
模型的属性名称必须与json中指定的名称匹配。
答案 1 :(得分:0)
在这里找到答案:Deserialize JSON into C# dynamic object?。 Tom Peplow的回答最符合我的需求:
使用Newtonsoft.Json.Linq; model = JObject.Parse(jsonString);