我有以下类型的变量{Newtonsoft.Json.Linq.JArray}.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Run Code Online (Sandbox Code Playgroud)
我想做到的是将其转换为List<SelectableEnumItem>那里SelectableEnumItem是以下类型:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我对编程很新,我不确定这是否可行.任何有关工作示例的帮助将不胜感激.
Hob*_*low 440
只需调用array.ToObject<List<SelectableEnumItem>>()方法.它会返回你需要的东西.
文档:将JSON转换为类型
Sou*_*asu 40
问题中的示例是一个更简单的情况,其中属性名称在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();
Run Code Online (Sandbox Code Playgroud)
在我的情况下,API返回值如下所示:
{
"pageIndex": 1,
"pageSize": 10,
"totalCount": 1,
"totalPageCount": 1,
"items": [
{
"firstName": "Stephen",
"otherNames": "Ebichondo",
"phoneNumber": "+254721250736",
"gender": 0,
"clientStatus": 0,
"dateOfBirth": "1979-08-16T00:00:00",
"nationalID": "21734397",
"emailAddress": "sebichondo@gmail.com",
"id": 1,
"addedDate": "2018-02-02T00:00:00",
"modifiedDate": "2018-02-02T00:00:00"
}
],
"hasPreviousPage": false,
"hasNextPage": false
}
Run Code Online (Sandbox Code Playgroud)
将项目数组转换为客户列表的方法如下所示:
if (responseMessage.IsSuccessStatusCode)
{
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
JObject result = JObject.Parse(responseData);
var clientarray = result["items"].Value<JArray>();
List<Client> clients = clientarray.ToObject<List<Client>>();
return View(clients);
}
Run Code Online (Sandbox Code Playgroud)