如何将JSON映射到具有不同结构的对象?

时间:2016-11-27 08:01:44

标签: c# json json.net

我有一些这个架构的JSON:

{
    "person":{
        "name":"test",
        "family":"testi"
    },
    "Employee":{
        "id":54,
        "department":"web development",
        "skils":[{"type":"C#", "grade":"good"},{{"type":"SQL", "grade":"Expert"}}]
    }
}

我需要将此JSON映射到以下类:

class Employee {
    public int id { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string Department { get; set; }
    public Skill[] Skills { get; set;}
}

class skill {
    public string Type { get; set; }
    public string Grade { get; set; }
}

现在有没有办法将我的JSON架构映射到我的C#对象? 我正在使用Newtonsoft.Json库,我正在尝试使用JsonProperty这样的属性:

[JsonProperty("Person.Name")]

在我的Employee课程上。但这不起作用。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

你的班级不适合你的json。您必须均衡json对象的类和属性的属性。 你的json有一个名为person的属性,但是你的类没有它。

MappedObject mappedObject = JsonConvert.DeserializeObject<MappedObject>(yourJson);

class MappedObject{
    public Person person;
    public Employee employee; 
}

class Person{
    public string name;
    public string family;
}
class Employee {
    public intid{get; set;}
    public string deartment {get; set;}
    public Skill[] skills {get; set;}
}
class skill{
    public string type{get; set;}
    public string grade{get; set;}
}

或者更好的方法是使用动态对象。

dynamic result = new ExpandoObject();
result = JsonConvert.DeserializeObject(yourJson);