我正在尝试为我的类结构反序列化json
我有以下JSON:
{
"Main": {
"Employees": {
"0": {
"FirstName": "Test ",
"LastName": "One"
},
"1": {
"FirstName": "Test ",
"LastName": "Two"
}
}
}
}
我想为以下类结构反序列化它:
public class Main
{
public List<Employee> Employees { get; set; }
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
有人可以建议我如何为此/任何其他选项编写转换器来实现此目的吗?
答案 0 :(得分:1)
显然理想的事情是使用不同的JSON( array ),但这可能是不可能的。
这不使用自定义反序列化选项,但是 - 它有效:
dynamic root = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
Newtonsoft.Json.Linq.JObject emps = root.Main.Employees;
var list = new List<Employee>();
foreach(var child in emps.Properties())
{
list.Add(child.Value.ToObject<Employee>());
}
答案 1 :(得分:0)
您的JSON有点不对劲。您创建了一个员工类型,其中字段0和1恰好具有相同的子属性。我认为你真正想做的是让员工成为一个阵列。
{
"Main" : {
"Employees": [
{
"FirstName": "Test ",
"LastName": "One"
},
{
"FirstName": "Test ",
"LastName": "Two"
}]
}
}