如何将JSON映射到具有不同结构的对象?
问题描述:
我有一些JSON用这个模式:如何将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
类。但这不起作用。有什么办法可以解决这个问题吗?
答
你的课是不适合你的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);
我这样做...蚂蚁它工作得很好...我的项目是其他服务的包装,我必须发送对象与我自己的模式....我可以使用自动映射器,但这个原因创建将MappedObject转换为我的模式的额外步骤。我想减少这一步 –
所以你应该使用我的第一个代码。 –
但它不填写员工姓名和家庭财产.... –