将Newtonsoft.Json.Linq.JArray转换为特定对象types的列表
我有以下{Newtonsoft.Json.Linq.JArray}types的variables。 
 properties["Value"] {[ { "Name": "Username", "Selected": true }, { "Name": "Password", "Selected": true } ]} 
 我想完成的是将其转换为List<SelectableEnumItem>其中SelectableEnumItem是以下types: 
 public class SelectableEnumItem { public string Name { get; set; } public bool Selected { get; set; } } 
我对编程相当内疚,我不确定这是否可能。 任何工作示例的帮助将不胜感激。
 只要调用array.ToObject<List<SelectableEnumItem>>()方法即可。 它会返回你所需要的。 
文档: 将JSON转换为types
 在问题中的例子是一个简单的情况下,属性名称完全匹配在JSON和代码中。 如果属性名称不完全匹配,例如json中的属性是"first_name": "Mark"并且代码中的属性是FirstName那么使用Select方法如下 
 List<SelectableEnumItem> items = ((JArray)array).Select(x => new SelectableEnumItem { FirstName = (string)x["first_name"], Selected = (bool)x["selected"] }).ToList(); 
我可以想到不同的方法来实现相同的
 IList<SelectableEnumItem> result= array; 
或者(我有一些情况,这一个不好)
 var result = (List<SelectableEnumItem>) array; 
或者使用linq扩展
 var result = array.CastTo<List<SelectableEnumItem>>(); 
要么
 var result= array.Select(x=> x).ToArray<SelectableEnumItem>(); 
或更明确地说
 var result= array.Select(x=> new SelectableEnumItem{FirstName= x.Name, Selected = bool.Parse(x.selected) }); 
请注意在上面的解决scheme我用dynamic对象
我可以想到更多的解决scheme是上述解决scheme的组合。 但我认为它涵盖了几乎所有可用的方法。
我自己使用第一个