[英]Iterate through complex object to set view model values
假设以下复杂的Json响应是由远程服务发回的
{
"query": "search",
"skills": {
"skill": [
"php",
"java",
"C#"
]
},
"results": [
{
"name": "jim",
"dept": "technology"
},
{
"name": "peter",
"dept": "technology"
}
]
}
它的格式是固定的,我已将其存储为字符串
string jsonString = JsonConvert.SerializeObject(Res);
我有一个回应模型
public class Response
{
public string query { get; set; }
public Skill skills { get; set; }
public List<Employees> results { get; set; }
}
public class Skill
{
public List<string> skill { get; set; }
}
public class Employees
{
public string name { get; set; }
public string dept { get; set; }
}
我有一个视图模型
public class EmployeeExperts {
public List<EmployeeInfo> employee { get; set; }
}
public class EmployeeInfo {
public string name { get; set; }
public string dept { get; set; }
}
我已经反驳了全班的反应
var Obj = JsonConvert.DeserializeObject<Response>(jsonString);
然后,我将如何遍历Obj并将其从控制器连接到EmployeeExperts视图模型?
例如EmployeeExperts.EmployeeInfo [0] = Response.results [0] .name
我只是在尝试正确解析响应并将其显示在视图上。 此外,我还有另一个问题-这是做所有这些事情的正确方法吗?
首先,我注意到您的Employees
和EmployeeInfo
是相同的,它不需要。
您可以按以下方式更改EmployeeExperts
类:
public class EmployeeExperts {
public List<Employee> Employees { get; set; }
}
现在您可以编写:
var Obj = JsonConvert.DeserializeObject<Response>(jsonString);
var experts = new EmployeeExperts();
// You can directly assign list like this and iterate through `experts.Employees` list
experts.Employees = obj.results;
注意:我尚未测试以上代码,您可能需要将结果转换为List<Employee>
。
此外,我还有另一个问题-这是做所有这些事情的正确方法吗?
我已经将AutoMapper用于此类对象到对象的转换。 它非常灵活,可以处理95%的案件。 在这95%的情况下,它可以节省您原本用于转换的大量时间。
尝试一下,看看是否符合您的目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.