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

如何将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); 
+0

我这样做...蚂蚁它工作得很好...我的项目是其他服务的包装,我必须发送对象与我自己的模式....我可以使用自动映射器,但这个原因创建将MappedObject转换为我的模式的额外步骤。我想减少这一步 –

+0

所以你应该使用我的第一个代码。 –

+0

但它不填写员工姓名和家庭财产.... –