如何反序列化包含Item1、Item2字段的JObject对象?
问题原因
你原有代码的错误点在于没有定位到正确的JToken层级:
- 根节点jObject下只有
Item1、Item2两个属性,你直接取jObject["id"]根本找不到对应值 AssocEmployee是Item1的子属性,你直接用根节点转Employee类型肯定转换失败
正确实现代码
两种方式选一种即可:
// 方式1:直接转换(推荐,字段多的时候更省代码,不易出错) EmployeeAssignment empAssignment = jObject["Item1"].ToObject<EmployeeAssignment>(); // 方式2:手动逐个字段赋值 var empAssignment = new EmployeeAssignment(); empAssignment.ID = jObject["Item1"]["ID"].Value<int>(); empAssignment.AssocEmployee = jObject["Item1"]["AssocEmployee"].ToObject<Employee>();
补充说明:如果你后续需要处理Item2,先判断
jObject["Item2"]不为null之后,调用ToObject<Position>()就能拿到对应实例,现在为null的场景直接忽略即可。
内容的提问来源于stack exchange,提问作者Christos
相关产品推荐
相关产品推荐

